C++的头文件中类声明后忘记加分号产生不可预期的编译错误
头文件 Test.h 的内容是
实现文件是
编译时出现错误
不把这两个文件连接起来考虑是很难知道是那里错了,况且Unmi原来又是写 java比C++多得多,java可没有#include的用法,其实有C++经验的人,明白了 #include只是把被包含文件的内容引入到当前位置。 上面把Test.h的内容插入到Test.cpp文件中#include "Test.h"处 ,那就要注意了,类声明后必须要加上一个分号,可以把类声明当成是普通的变 量声明语句一样,需要一分号结束,不然会出现许多不可预知的编译错误 错误类型并非就是只出现上面那样,主要看头文件内容引入到当前位置后, 与随后语句差一个分号会出现什么语法错误,所以应该养成类声明后加分好的习 惯就不会错的。 比如实现文件写成
出现的错误就是 #include "Test.h" void Test::test1(){} C:\Documents and Settings\yanbin\My Documents\Visual Studio Projects\TestVirtual\Test.cpp(3) : error C2628: ''Test'' followed by ''void'' is illegal (did you forget a '';''?) C:\Documents and Settings\yanbin\My Documents\Visual Studio Projects\TestVirtual\Test.cpp(3) : error C2556: ''class Test __thiscall Test::test1(void)'' : overloaded function differs only by return type from ''void __thiscall Test::test1(void)'' c:\documents and settings\yanbin\my documents\visual studio projects\testvirtual\test.h(4) : see declaration of ''test1'' C:\Documents and Settings\yanbin\My Documents\Visual Studio Projects\TestVirtual\Test.cpp(3) : error C2371: ''test1'' : redefinition; different basic types c:\documents and settings\yanbin\my documents\visual studio projects\testvirtual\test.h(4) : see declaration of ''test1'' 因为编译器看到了头文件的类声明与语句 void Test::test1(){} 之间没 有分号。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |