私はすべてのオブジェクトの参照リストを保持する必要があるクラスを持っています。たとえば :mapA
はmain.cpp
にのみグローバルであるため、同じクラスで使用されているマップ参照クラス
//A.cpp
class A {
A() {}
someMethod() {}
someOtherMethod() { mapA[0]->someMethod(); }
}
//main.cpp
#include <map>
std::map<int, A*> mapA;
int main(int argc, char const *argv[]) {
int count = 0;
A* a = new A();
mapA[count] = a;
count++;
}
しかし、A.cpp
はそれを参照することはできません。私はextern
を使ってみましたが、map
は同じクラスA
を使用しているので、どこに置くべきかわかりません。
これについてはどのような方法が最適ですか?あなたは、コンストラクタでそれらを登録し、クラスの静的VARを作るかもしれない
は、ビット欠陥のあるデザインのように見えます。まず第一に、マップに格納されている生ポインタをなぜ使用していますか?あなたの実際の要件とユースケースについてもう少し説明してもらえますか?あなたが解決しようとしているXY問題のように少し聞こえます。 –
@πάνταῥεῖ私は基本的な 'deposit()'と 'withdraw()'メソッドを使って銀行システムを書いています。しかし、私は 'transfer()'も持っています。これはどの銀行の口座間でもお金を移します。だから、私は銀行が既存のすべての銀行を追跡するようにしたいのです。 ABAのようなもの。 – drum
これらの 'transfer()'操作を行うためのインターフェイスを提供する、すべてのアカウントの上位コンテナクラスを持つことはどうでしょうか?おそらく、そのような種類のビジネスロジックを外部化する必要があります。また、生のポインタを扱うべきではなく、代わりに[スマートポインタ](http://en.cppreference.com/w/cpp/memory)を用意してください。 –