typedef int abc;
class Some{
public:
abc foo(){...}
typedef double abc;
};
上記のコードでは、エラーが発生することがわかりました。
error: changes meaning of 'abc' from 'typedef int abc'
本のc++ 入門書、第 5版では、次のように書かれているためです。
クラス定義は、次の 2 つのフェーズで処理されます。
1.最初に、メンバー宣言がコンパイルされます。
2.関数本体は、クラス全体が表示された後にのみコンパイルされます。
しかし、ここのコードでは:
typedef int abc;
class Some{
public:
int foo(abc){...}
typedef double abc;
};
abc
パラメータリストに設定しました。しかし、そのようなエラーは発生せず、コンパイラは完全に正常に動作します。後者のコードで前者と同様のエラーが発生しないのはなぜですか?