最近一段代码让我很困惑:
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++ 对参数类型和返回类型不公平?