我創建了一個功能的OOP程序,使用一堆類,我收到了一堆沒有意義的錯誤。我正在開發一個Windows VC++ 2008項目,並且在開始時我嘗試了不同的實現和頭文件。當我試圖例如使 object1.cpp錯誤時分裂實施和標題
#ifndef Object1_cpp
#define Object1_cpp
#include "Object1.h"
Object1::Object1(){
...
}
Object1::~Object1(){
...
}
....
#endif
object1.h
#ifndef Object1_H
#define Object1_h
class Object1{
public: Object1();
public: ~Object1(); // line 39 of object1.h
...
};
#endif
Main.cpp的
#include "object1.cpp"
有時它返回的
1>c:...\object1.h(39) : error C2059: syntax error : '('
1>c:...\object1.h(39) : error C2238: unexpected token(s) preceding ';'
錯誤
,因爲它是不抱怨構造函數,唯一想到的就是表示析構函數的'〜'。當我把.H出來的畫面改變的.cpp的是
#ifndef Object1_H
#define Object1_h
class Object1{
public: Object1::Object1();
public: Object1::~Object1();
...
};
#endif
或
#ifndef Object1_H
#define Object1_h
class Object1{
public: Object1();
public: ~Object1();
...
};
#endif
它編譯罰款。我不明白。當我在其他編譯器上做過類似的工作時,它工作正常,但它不在這裏。 目前該程序功能齊全,但我忽略.h文件的存在,並在.cpp文件中執行所有操作。編譯器似乎會拋出一個表示析構函數的Til-de操作符的問題。這只是問題的一個例子,當我嘗試分離實現並轉發引用時,它會出現在我的所有類中。
找到解決辦法。顯然我的隊友之一所使用的相同的#define在他的文件之一(因爲它是有道理的,但並不像被要求約定文件名)
你不每個功能都需要'public:'。在'public:'之後,所有聲明的函數和變量都是公共的,直到範圍被改變(例如'private:'或'protected:')。 – 2012-01-31 07:48:39
界定公共,私有和保護的每一件事情其實來自我用java的經驗,但無論編譯器不會造成任何問題,而且是一個子集標準不是主。如果是這樣的問題,那麼,當我在一個文件讓他們爲什麼會工作,而不是給定的地址問題的答案的頭 – gardian06 2012-01-31 12:21:49
非。他們只是風格習慣的修辭。 – gardian06 2012-01-31 12:33:54