当前博客:[封装技巧]模板类-之返回其他模板类

51 次浏览【转载需注明来源】

博客作者:【到底是为了什么】

个性签名:有问题用QQ联系我

[PC封装教程]模板类(点击跳转)


火山的模板类不同于C++的模板类,接触越多就会发现其限制越多

本文则讨论模板函数如果需要返回其他模板类怎么办?

( 如果是模板基础类的方法返回另一个 具体的模板基础类的实现类则不在本文讨论范围 )

例如在C++中,可以直接使用<>尖括号来返回 模板B类 , 模板B类的模参 为当前模板类 

template <class T>
class 模板B类 {
// 具体代码
};
//------------我是 注释 分割线-------------
template <class T>
class 模板A类
{
public : 
       模板B类<T> 测试函数(void *  p , T s)
       {
            return  模板B类<模板A类<T>> (p,s) ;
       } 
} ;
C++

在上一篇帖子中 已经说到 火山pc的模板类 只有实现类才翻译到c++源码 且 翻译后的类是个具体(定死)的类, 并不是C++模板类(即没有template <> 这样的代码)  , 所以 火山PC并不支持返回模板基础类 ,非要填写则 报错 126: 错误: 没有找到所指定名称的类"***"


那么如何实现呢?  本帖提供两个写法 

①:简单粗暴 , 多使用一个模板类型 ,函数返回值写模板类型* ,在定义模板实现类时就将函数返回值类型通过模板类型定义好

②: 既然无法将返回值写为 模板基础类  可以通过 嵌入式方法让调用函数的用户来提供返回值数据类型

对应的参数写法为 : 

类型留空

属性名和属性值为:

@匹配类型  所有类型

@需求类型  数据类型

@返回值类型  0     


如果你有更好的方法 欢迎发帖交流

默认排序
Generic placeholder image
利快云编程教育平台 Time: 2022-05-13 11:59:01

到底老哥又开始放大招了


[封装技巧]模板类-之返回其他模板类