假设有一个源文件 un2.cpp
----un2.cpp----
class employee;
void employee::setname(string s)
{
.....(some code)
}
雇员类在 un2.h 中定义,其中声明了 setname()。现在,当我尝试通过 '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’
为什么编译器不将employee 作为外部符号(就像它采用先前声明但未定义的符号一样)并编译un2.cpp 文件。
编译普通的未定义符号和未定义的类有什么区别吗?还有谁能告诉我(如果可能的话),只转发声明一个类并在其中定义符号的方法?