9
#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?

4

3 回答 3

25

typedef创建同义词,而不是新类型,因此myIntint已经相同。问题是范围——myInt在全局范围内没有,你必须A::myInt在类之外使用。

A::myInt A::getK() { return k; }
于 2012-04-20T19:00:21.237 回答
3

A::myInt A::getK() { return k; }

您必须限定typedef类型,因为您在类A范围内创建了它。

于 2012-04-20T19:00:22.197 回答
-2

将定义放在类之外。

于 2012-04-20T19:03:00.627 回答