C++的头文件中类声明后健忘加分号发生不行预期的编译错误
当前位置:以往代写 > C/C++ 教程 >C++的头文件中类声明后健忘加分号发生不行预期的编译错误
2019-06-13

C++的头文件中类声明后健忘加分号发生不行预期的编译错误

C++的头文件中类声明后健忘加分号发生不行预期的编译错误

头文件 Test.h 的内容是

class Test
{
public:
virtual void test1(); 
}

实现文件是

Test.cpp
#include "Test.h"
#include <iostream>
using namespace std;
void Test::test1(){ cout<<"Hello"<<endl; }

编译时呈现错误

c:\program files\microsoft visual studio\vc98 \include\errno.h(29) : error C2143: syntax error : missing ';' before 'string'
c:\program files\microsoft visual studio\vc98\include\errno.h(29) : fatal error C1004: unexpected end of file found

不把这两个文件毗连起来思量是很难知道是哪里错了,何况Unmi本来又是写 java比C++多得多,java可没有#include的用法,其实有C++履历的人,大白了 #include只是把被包括文件的内容引入到当前位置。

上面把Test.h的内容插入到Test.cpp文件中#include "Test.h"处 ,那就要留意了,类声明后必需要加上一个分号,可以把类声明当成是普通的变 量声明语句一样,需要一分号竣事,否则会呈现很多不行预知的编译错误

错误范例并非就是只呈现上面那样,主要看头文件内容引入到当前位置后, 与随后语句差一个分号会呈现什么语法错误,所以应该养成类声明后加分好的习 惯就不会错的。

好比实现文件写成

#include "Test.h"
void Test::test1(){}

呈现的错误就是

#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(){} 之间没 有分号。

    关键字:

在线提交作业