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は、新しいタイプではなくシノニムを作成するためmyInt、 とintはすでに同じです。問題はスコープ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 に答える