2012-04-20 4 views
7
#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; 
} 
ミントは、この行で「INT」として、コンパイラによって認識されない

C++のtypedefと戻り値の型:typedefで作成された戻り値の型をコンパイラに認識させるには?

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

がどのように私はintとしてミンを認識するようにコンパイラを得ることができますか?

答えて

19

typedefは、新しいタイプではなく、同義語を作成するので、myIntintはすでに同じです。問題はスコープです。myIntはグローバルスコープにはありません。クラス外にはA::myIntを使用する必要があります。

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

+1 *シノニム*の代わりに*エイリアス* – AJG85

2

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

あなたはクラスAスコープ内でそれを作成したので、あなたは、typedefタイプを修飾する必要があります。

-2

クラスの外に定義を置きます。