在我的标头中,我获得了用于外部库模板的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(此处忽略名称空间)。未定义。

09-08 11:49