我在myclass
部分的typedef
标题文件中定义了一个课程private:
。
typedef int inttest;
我的源文件包含此头文件,但在尝试在源文件中使用typedef时是这样的
inttest myclass::foo() { }
我收到错误:
error: 'inttest' does not name a type
这是为什么?我是否还需要在源文件中声明typedef
?
答案 0 :(得分:3)
首先,typedef在类的范围内定义。因此,如果将typedef用作非限定名称作为返回类型,则编译器无法找到该定义。你可以写例如
myclass::inttest myclass::foo() { }
然而,编译器会再次发出错误,因为typedef被定义为private。
编辑:对不起。我将展示我所展示的功能的定义。但是在调用该函数的代码中,您需要编写
myclass a;
int i = a.foo();
或
myclass a;
auto i = a.foo();
你可能不会写
myclass a;
myclass::inttest i = a.foo();