#include <iostream>
using namespace std;
class A {
typedef int myInt;
int k;
public:
A(int i) : k(i) {}
myInt getK();
};
myInt A::getK() { return k; }
int main (int argc, char * const argv[]) {
A a(5);
cout << a.getK() << endl;
return 0;
}
编译器在此行中未将 myInt 识别为"int":
myInt A::getK() { return k; }
如何让编译器将 myInt 识别为 int?
typedef
创建同义词,而不是新类型,因此myInt
和int
已经相同。问题是作用域 — 全局作用域中没有myInt
,您必须在类之外使用A::myInt
。
A::myInt A::getK() { return k; }
A::myInt A::getK() { return k; }
您必须限定typedef
类型,因为你是在类A
范围内创建的。
将定义放在类之外。