int main() {
B bb; //does not compile (neither does class B bb;)
C cc; //does not compile
struct t tt; //compiles
class B {}; //HERE is the class B defination
struct s { struct t * pt; }; //compiles
struct t { struct s * ps; };
return 0;
}
class C {};
ここに示した例を変更しました。
構造体の前方宣言は機能するが、クラスの前方宣言は機能しないのはなぜですか?
それは名前空間と関係がありますか?tag namespace
そしてtypedef namespace
?typedefのない構造体定義はタグ名前空間に行くことを私は知っています。
構造体は、すべてのパブリックメンバーによる単なるクラスです。ですから、私は彼らが同じように振る舞うことを期待しています。