ソースファイル un2.cpp があるとします
----un2.cpp----
class employee;
void employee::setname(string s)
{
.....(some code)
}
従業員クラスは setname() が宣言されている un2.h で定義されています。「cc -c un2.cpp -o un2.o」で un2.cpp をコンパイルしようとすると、エラー メッセージが表示される
un2.cpp:3:16: error: invalid use of incomplete type ‘struct employee’
un2.cpp:1:7: error: forward declaration of ‘struct employee’
コンパイラが単に従業員を外部シンボルとして取り (以前に宣言されたが未定義のシンボルを取るように)、 un2.cpp ファイルをコンパイルしないのはなぜですか。
通常の未定義シンボルと未定義クラスのコンパイルに違いはありますか? また、クラスを前方宣言し、その中のシンボルを定義する方法を教えてもらえますか?