2012-08-15 59 views
0

我使用C++編寫OOP軟件,我需要在文件之間傳遞我的類的實例,50 ... 60個文件。不幸的是,我使用了一個使用回調函數而不是對象的庫。在50 ... 60個文件之間傳遞類對象

問題: 我用了幾個心滿意足如cpp文件之間的結構,但我得到multiple definition錯誤或...我如何通過一個實例,從50個... 60類之間的每個類?

Class A{}; A *instanceA = new A(); 
Class B{}; B *instanceB = new B(); 
. 
. 
. 
Class Z{}; Z *instanceZ = new Z(); 

我需要在文件之間傳遞intaanceA,intanceB等。你有什麼主意嗎?

回答

2

我懷疑你在頭文件中定義的實例,其中包括在多個文件:

A.h

class A{}; 

A* instanceA = new A(); 

b.cppc.cpp兩個#include <A.h>,導致多個定義錯誤。

要糾正你可以在頭文件使用extern聲明實例和定義它只有一個.cpp文件:

A.h

class A{}; 
extern A* instanceA; 

A.cpp

A* instanceA = new A(); 

另一個原因是在頭文件中使用extern,但在多個.cpp文件中定義instanceA(如此處所述)。

+0

不,我沒有在標題中定義。 – PersianGulf 2012-08-15 07:38:49

+0

@seg_fault,你可以發佈聲明'instanceA'的頭文件嗎? – hmjd 2012-08-15 07:45:16

+0

'class AudioCallbackData { public: AudioCallbackData(); class1 * socketPtr; class2 * mainCorePtr; class3 * audioCorePtr; class4 * devPtr; class5 * audioMixer; }; extern AudioCallbackData * audioCallbackDataPtr;' – PersianGulf 2012-08-15 07:50:32