假设声明的函数有一个源文件un2.cpp编译包含在报头中
----un2.cpp----
class employee;
void employee::setname(string s)
{
.....(some code)
}
Employee类在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’
为什么不编译器只是把员工作为外部符号(就像它需要一个先前声明但未定义的符号)并编译un2.cpp文件。
编译一个普通的未定义符号和一个未定义的类是否有区别? 也有人可以告诉我(如果有可能),只是前进的方式声明一个类,并在其中定义的符号?
您是否将#include un2.h插入到cpp文件中? – sizzzzlerz 2012-08-15 13:10:25
不......如果我包含.h文件,预处理器会将它复制到.cpp文件中,并且不会有外部符号来讨论。这将像一个正常的编译一切定义。 – avinash 2012-08-15 14:33:15