2012-09-24 30 views
1

我是新來OO編程基礎啓動AB對象,所以一個愚蠢的問題:面向對象編程:在GUI

我已經創建了一個名爲algorithmObject類。基本上,它有一些與之相關的功能。

我創建了一個QT GUI,我想創建類型algorithmObject的公衆對象,因爲我希望能夠訪問不同的onclick事件的成員函數。

所以在我GUI.h文件,我有:

public: 

algorithmObject Object1; 

在我GUI.cpp文件,我試圖將其初始化:

Object1 = algorithmObject(); 

我使用MS VS 2010,我得到一個編譯器錯誤:

錯誤C1903:無法從以前的錯誤恢復;停止編譯 錯誤C2065:Object1':未聲明的標識符

如果我不包括:

Object1 = algorithmObject(); 
我GUI.cpp文件

,只是希望能爲GUI構造函數來創建對象對我來說,我犯了同樣的錯誤。

我想,我是不是正確初始化我的對象在.cpp文件中莫名其妙。有人可以建議什麼是正確的過程?

我algorithmObject文件概述如下:

algorithmObject.h

#include <iostream> 
#include <fstream> 

class algorithmObject 
{ 

public: 

algorithmObject (void); 
~algorithmObject (void); 

void function1 (int parameter); 
void function2(); 
} 

algorithmObject.cpp

#include "algorithmObject.h" 

algorithmObject::algorithmObject(void) 
{ 
} 

void algorithmObject::function1(int parameter) 
{ 
//do something 
} 

void algorithmObject::function2() 
{ 
//do something 
} 

algorithmObject::~algorithmObject(void) 
{ 
} 

如果我然而,不包括任何定義GUI.h文件,並在th中的單個函數中定義我的algorithmObject ËGUI(algorithmObject Object1),我能夠正確訪問我的類的功能。但問題是,該對象是該功能的本地,我不能從任何其他功能的GUI.cpp文件,這是非常關鍵的我...

+1

你在gui.h中包含algorithmObject.h嗎? –

+0

哎呦很好抓傑裏。我將它包含在GUI.cpp中:(你可以把這個作爲答案發布,我會接受它嗎?非常感謝! – c0d3rz

回答

1

你需要包括algorithmObject.hgui.h,所以通過編譯器看到試圖使用algorithmObject的代碼的時間,它已經看到algorithmObject類的聲明。

這是可能通過之前,請務必包括algorithmObject.h源文件以避免這一點,你嘗試使用它,所以你需要有:

#include "algorithmObject.h" 
#include "gui.h" 

雖然這是相當標準的做法,很多C很長一段時間,我(個人)認爲它相當容易出錯和脆弱,所以我通常更喜歡如果一個標題依賴於其他標題,它包含它們自己,所以在包含它時沒有先決條件在源文件中。

+0

欣賞解釋!:) – c0d3rz