0

私は C++ を使用して OOP ソフトウェアを作成しており、ファイル間でクラスのインスタンスを 50...60 ファイルに渡す必要があります。残念ながら、オブジェクトではなくコールバック関数を使用するライブラリを使用しました。

質問: cpp ファイル間で struct などのいくつかのステートを使用しましたが、multiple definitionエラーが発生するか... 50 ~ 60 個のクラス間で各クラスから 1 つのインスタンスを渡すにはどうすればよいですか?

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

ファイル間で intaanceA、intanceB などを渡す必要があります。何か考えはありますか?

4

1 に答える 1

2

ヘッダー ファイルでインスタンスを定義し、それを複数のファイルに含めたと思われます。

A.h:

class A{};

A* instanceA = new A();

b.cppおよびc.cpp両方#include <A.h>で、複数定義エラーが発生します。

修正するには、ヘッダー ファイルでインスタンスextern宣言し、正確に 1 つのファイルで定義.cppします。

A.h:

class A{};
extern A* instanceA;

A.cpp:

A* instanceA = new A();

もう 1 つの原因はextern、ヘッダー ファイルで使用しているがinstanceA、複数の.cppファイルで定義している (この場合のように) ことです。

于 2012-08-15T07:37:12.840 に答える