我用C ++编写OOP软件,我需要在文件,50 ... 60文件之间传递我的类的实例。不幸的是,我使用的是一个使用回调函数而不是对象的库。
问题:
我在cpp文件之间使用了一些结构,例如struct,但是我得到了multiple definition
错误或者......我如何在每个类中传递50个~60个类之间的一个实例?
Class A{}; A *instanceA = new A();
Class B{}; B *instanceB = new B();
.
.
.
Class Z{}; Z *instanceZ = new Z();
我需要在文件之间传递intaanceA,intanceB等。你有什么想法吗?
答案 0 :(得分:2)
我怀疑你在头文件中定义了实例并将其包含在多个文件中:
A.h
:
class A{};
A* instanceA = new A();
b.cpp
和c.cpp
#include <A.h>
,导致多个定义错误。
要解决此问题,您可以使用extern
声明头文件中的实例,并在正好一个.cpp
文件中定义:
A.h
:
class A{};
extern A* instanceA;
A.cpp
:
A* instanceA = new A();
另一个原因是在头文件中使用了extern
,但在多个instanceA
文件中定义了.cpp
(就像这里的情况一样)。