C++ 头文件中声明的typedef在源文件中不可用
我在头文件中定义了一个类C++ 头文件中声明的typedef在源文件中不可用,c++,typedef,header-files,C++,Typedef,Header Files,我在头文件中定义了一个类myclass,在private:部分定义了typedef typedef int inttest; 我的源文件包括这个头文件,但是当试图在源文件中像这样使用typedef时 inttest myclass::foo() { } 我得到一个错误: error: 'inttest' does not name a type 为什么会这样?是否还需要在源文件中声明typedef。因此,如果将typedef用作非限定名称作为返回类型,编译器将无法找到该定义。你可以写一个例
myclass
,在private:
部分定义了typedef
typedef int inttest;
我的源文件包括这个头文件,但是当试图在源文件中像这样使用typedef时
inttest myclass::foo() { }
我得到一个错误:
error: 'inttest' does not name a type
为什么会这样?是否还需要在源文件中声明
typedef
。因此,如果将typedef用作非限定名称作为返回类型,编译器将无法找到该定义。你可以写一个例子
myclass::inttest myclass::foo() { }
但是,编译器将再次发出错误,因为typedef定义为private
编辑:对不起。我展示的函数的定义将被编译
但是,在调用函数的代码中,您需要编写
myclass a;
int i = a.foo();
或
你不可以写信
myclass a;
myclass::inttest i = a.foo();
试试myclass::inttest myclass::foo(){}我相信返回类型实际上在类范围内。
myclass a;
myclass::inttest i = a.foo();