在*.cpp文件中定义模板类指针
Typedef Template Class Pointer in*.cpp file
在我的标题中,我得到了一个外部库模板的typedef以及一个函数,如:
#include "ExternalFancyLib.h"
class Fancy
{
public:
//...
typedef FancyClass<int , 3> FancyClassType;
FancyClassType::Pointer FancyFunction ();
}
在我的*.cpp文件中我得到:
#include "Fancy.h"
FancyClassType::Pointer Fancy::FancyFunction()
{
// do and return smth.
}
我一向友好的编译器告诉我,"::"后面必须跟一个类或命名空间,指的是FancyClassType。
有什么办法可以优雅地解决这个问题吗?
欢呼Usche
FancyClassType
是在您的Fancy
类中定义的,因此您也必须指定它:
Fancy::FancyClassType::Pointer Fancy::FancyFunction(){}
FancyClassType::Pointer
使用当前作用域查找。在类定义中,这包括Fancy
中的定义。在Cpp文件中,名称在全局作用域中解析,因此它将呈现::FancyClassType::Pointer
(此处忽略名称空间)。
我有一种强烈的感觉,你的FancyClassType
需要去代替FancyClass<int , 3>
,你需要在使用你的typedef
时参考Fancy::
#include "Fancy.h"
Fancy::FancyClassType::Pointer Fancy::FancyFunction (){
// do and return smth
}
否则你实际上并没有调用你所创建的typedef
。
我能想到的另一种方法是将::Pointer
添加到typedef
中,你只需要调用
Fancy::FancyClassType Fancy::FancyFunction (){
// do and return smth
}
这是我能想出的最好的办法了。希望能有所帮助
相关文章:
- 用户定义函数中的指针和输入
- 使用"Task"函数指针队列定义作业管理器
- 通过函数指针定义类范围之外的方法
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 为什么不能将字符指针定义为数组?
- 块作用域中的函数指针定义
- 从较小类型的指针定义的范围构造向量
- 函数指针定义中是否允许使用参数名称
- 是对范围的指针定义明确的比较
- 无法将指针定义为用户定义的类,但我可以直接实例化
- C++ GoogleTest 使用夹具 - 无法访问函数指针定义
- 是指针定义行为映射中 nullptr 的默认值
- 是否应始终为具有原始指针成员的类中的深层复制指针定义复制构造函数
- 在类模板外部为指针定义函数
- 如何使用函数指针定义多集
- 使用结构作为指针定义变量
- 使用非常量指针定义对常量数据的指针的引用有什么问题?
- 是否有办法为类的指针定义括号操作符?
- 为智能指针定义类型是不好的做法吗?
- 为什么函数指针定义适用于任意数量的'&'号或星号"*"?