2012-08-15 107 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