C++ Class Typedef Struct does not name a type
我试图在我的C++程序中使用TyBuffFrasts。我开始编写以下代码,直到在尝试向类中添加返回模板typedef结构指针的方法时收到错误。
结构源程序
1 2 3 4 5 6 7 | template <typename T> class StructSource { public: struct TestStruct{ T value; }; }; |
用户,h
1 2 3 4 5 6 7 8 9 | #include"StructSource.h" class User { public: typedef StructSource<int>::TestStruct IntStruct; IntStruct *getIntStruct(); }; |
用户协议
1 2 3 4 5 | #include"User.h" IntStruct *User::getIntStruct() { return 0; } |
这在使用gcc编译时会出现以下错误。
User.cpp:3:1: error: ‘IntStruct’ does not name a type
我无法解释为什么会这样。我缺少什么类型的信息?
"user"也是一个"namespace"(实际上,正如大多数评论者指出的那样,"namespace"是为了快速回答),因此您必须使用
1 2 3 | User::IntStruct *User::getIntStruct() { return 0; } |
你需要:
1 | User::IntStruct *User::getIntStruct() { ... } |
intstruct在
由于
1 | User::IntStruct *User::getIntStruct() { |
这与名称空间不同,即使语法相同。