我写了一个程序,它都在一个文件中,方法在标题中前向声明。该程序最初在一个文件中时运行良好。但是当我分离程序时,我不断地随机出现在头文件中声明的类之一的析构函数。
我的标题中有一个静态变量来计算特定类的对象数。每当我构造对象时,我都会增加这个变量。然后在我的析构函数中,我从那个变量中减去 1,检查它是否为 0(意味着它是最后一个对象)并做一些事情。有时值似乎关闭,我不知道为什么。我的应用程序中确实有随机调用,但我不明白为什么这会影响我上面描述的内容,谢谢。任何帮助或见解表示赞赏!
[更新]:有一个基类,其中包含在头文件中实现的析构函数..,然后我有两个派生类,它们在它们的构造函数中递增静态变量.. 那我该怎么办?
我想做的是以下内容:在我的标题中,我有这个:
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++;
}
我在哪里可以定义计数,这样我就不会得到误导性计数?谢谢。