すべてが 1 つのファイルにまとめられたプログラムを作成し、メソッドはヘッダーで前方宣言されました。プログラムは、最初は 1 つのファイルにあるときに完全に機能しました。しかし、プログラムを分離すると、ヘッダー ファイルで宣言されたクラスの 1 つのデストラクタがランダムに発生し続けました。
特定のクラスのオブジェクトの数をカウントするために、ヘッダーに静的変数があります。オブジェクトを構築するたびに、この変数をインクリメントします。次に、デストラクタでその変数から 1 を減算し、それが 0 (最後のオブジェクトであることを意味する) かどうかを確認し、何かを行います。値が時々ずれているようですが、理由はわかりません。アプリケーションにランダムな呼び出しがありますが、それが上記の説明に影響する理由がわかりません。ありがとうございます。どんな助けや洞察も大歓迎です!
[更新]:ヘッダーに実装されているデストラクタを含む基本クラスがあります。次に、コンストラクタで静的変数をインクリメントする2つの派生クラスがあります..どうすればよいですか?
私がやろうとしていることは次のとおりです:私のヘッダーにはこれがあります:
class A {
public:
virtual ~A() {
count --;
if (count == 0) { /* this is the last one, do something */ }
}
class B : public A {
public:
B();
}
次に、クラスBIには
B::B() {
count++;
}
誤解を招くカウントを取得しないように、どこでカウントを定義できますか? ありがとう。