在头文件中声明的typedef在源文件中不可用

时间:2014-04-28 21:55:41

标签: c++ typedef header-files

我在myclass部分的typedef标题文件中定义了一个课程private:

typedef int inttest;

我的源文件包含此头文件,但在尝试在源文件中使用typedef时是这样的

inttest myclass::foo() { }

我收到错误:

error: 'inttest' does not name a type

这是为什么?我是否还需要在源文件中声明typedef

1 个答案:

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