■
例を挙げよう。
class A;A* create_instance();
int main(int, char* []) {
A* a = create_instance();
delete a;return 0;
}
このファイルをコンパイルするとなにが起きるだろうか。コンパイラによっては、コンパイルに失敗するだろうし、警告が発せられるかもしれない。手元にあった gcc 3.3 では警告が表示されたが、コンパイルには成功した。
test.cpp: In function `int main(int, char**)':
test.cpp:7: warning: `a' has incomplete type
test.cpp:1: warning: forward declaration of `struct A'
それで、これのいったいなにが問題なのか?