在我的标头中,我获得了用于外部库模板的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。
有什么想法可以解决这个问题吗?
干杯乌切
最佳答案
FancyClassType
是在Fancy
类中定义的,因此也必须指定:
Fancy::FancyClassType::Pointer Fancy::FancyFunction(){}
使用当前作用域查找
FancyClassType::Pointer
。在您的类定义中,这包括Fancy
中的定义。在您的Cpp文件中,名称是在全局范围内解析的,因此它将呈现::FancyClassType::Pointer
(此处忽略名称空间)。未定义。