我正在尝试在我的C++程序中使用typedef结构.我开始编写以下代码,直到我在尝试向我的类添加一个返回模板typedef结构指针的方法时收到错误.
StructSource.h
template <typename T>
class StructSource {
public:
struct TestStruct{
T value;
};
};
Run Code Online (Sandbox Code Playgroud)
User.h
#include "StructSource.h"
class User {
public:
typedef StructSource<int>::TestStruct IntStruct;
IntStruct *getIntStruct();
};
Run Code Online (Sandbox Code Playgroud)
User.cpp
#include "User.h"
IntStruct *User::getIntStruct() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在使用GCC进行编译时,会出现以下错误.
User.cpp:3:1:错误:'IntStruct'没有命名类型
我无法解释为什么会这样.我错过了什么类型的信息?
Vik*_*pov 11
"用户"也是一个"命名空间"(范围,实际上,正如大多数评论者指出的那样 - "命名空间"用于快速回答),所以你必须使用
User::IntStruct *User::getIntStruct() {
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你需要:
User::IntStruct *User::getIntStruct() { ... }
Run Code Online (Sandbox Code Playgroud)
IntStruct在User
范围内定义,但函数的返回值不在范围内.有这些范围的问题的讨论在这里.