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();