最近、コードの一部が私を混乱させました:
class A {
public:
typedef int SomeType;
void func(SomeType i);
SomeType func2();
};
void A::func(SomeType i) {
cout << "in A, value: " << i << endl;
}
SomeType A::func2() {
return 123;
}
int main() {
A a;
}
G++ 4.4 では、A::func2 のコンパイル中に SomeType がわからないというコンパイル エラーが発生します。
error: 'SomeType' does not name a type
しかし、同じ SomeType はA::func(SomeType i)でうまくコンパイルされます:
class A {
public:
typedef int SomeType;
void func(SomeType i);
};
void A::func(SomeType i) {
cout << "in A, value: " << i << endl;
}
誰でもこれを理解するのを手伝ってもらえますか? C++ は引数の型と戻り値の型を不公平に扱っているようですか?