私はかなり長い間 C++ でプログラミングを行ってきましたが、今日までこれについて考えたことはありませんでした。
次のコードを検討してください。
struct foo
{
// compiles fine
void bar()
{
a = 1;
my_int_type b;
b = 5;
}
// Just a declaration, this fails to compile, which leads me to assume that
// even though the bar() method is declared and defined all at once, the
// compiler looks/checks-syntax-of the class interface first, and then compiles
// the respective definitions...?
void bar2(my_int_type); // COMPILE ERROR
my_int_type b; // COMPILE ERROR because it comes before the typedef declaration
typedef int my_int_type;
my_int_type a;
void bar3(my_int_type); // compiles fine
};
int main()
{
foo a;
a.bar();
return 0;
}
エラーが発生する理由(bar2()
上記のコメントを参照)についての私の理解は正しいですか? いずれにせよ、シングルパス C++ コンパイラが上記のコードをコンパイルする方法の単純な概要を示した回答をいただければ幸いです。