2013-12-08 49 views
1

我收到的錯誤:G ++編譯錯誤的基本對象的構造

thing.cpp:5:1: error: ‘SquareThing’ does not name a type 
SquareThing::SquareThing() 
^ 
compilation terminated due to -Wfatal-errors. 
make: *** [thing.o] Error 1 

我thing.h文件:

#define THING_H_ 
#ifndef THING_H_ 
#include <vector> 
#include <iostream> 
class SquareThing{ 

public: 
     SquareThing(); 
     //other functions 
private: 
    int something; 
    //more members 

}; 
#endif 

任我thing.cpp:

#include "thing.h" 
#include <vector> 
#include <iostream> 
using namespace std; 
SquareThing::SquareThing() 
{ 
    something = 3; 
} 
//more functions below 

這似乎太簡陋了,但我似乎無法找到錯誤。任何幫助是極大的讚賞。

+1

典型的頭文件保護,'MAZE_H_',將反映該文件的名稱,以避免複製。如果你的其他文件也定義了'MAZE_H_',你的整個'thing.h'頭文件將被跳過... – meagar

+0

我的道歉,我在放置'MAZE_H_'而不是'THING_H_'時犯了一個基本錯誤。我的實際代碼有'THING_H_',但仍不能編譯。 – headbone

回答

0

這兩句話是落後:

#define THING_H_ 
#ifndef THING_H_ 

你肯定意味着:

#ifndef THING_H_ 
#define THING_H_ 

在向後的順序,你是確保頭的身體從來沒有踢,這並不是非常有用。

+0

非常感謝您展示錯誤! – headbone

+0

@ user3078978:http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – lpapp

0

你需要切換您的宏的順序:

#define THING_H_ // define the macro 
#ifndef THING_H_ // if the macro is not defined (well, it is always defined...) 

應該

#ifndef THING_H_ // if the macro hasn't been defined ... 
#define THING_H_ // ... define it 
+0

太棒了,謝謝你的幫助! – headbone