我编写了一个程序,全部在一个文件中,并且这些方法在头文件中进行了前向声明。该程序最初在一个文件中完美工作。但是,当我分开程序时,我一直在头文件中声明的某个类的析构函数中随机出现。静态变量,单独编译
我在头中有一个静态变量来计算特定类的对象数量。每当我构造对象时,我都会增加这个变量。然后在我的析构函数中,我从该变量中减去1,检查它是否为0(意味着它是最后一个对象)并执行一些操作。价值似乎有时会关闭,我不知道为什么。我的应用程序中确实有随机电话,但我不明白为什么会影响我上面描述的内容,谢谢。任何帮助或洞察力,表示赞赏!
[更新]:有一个基类,其中包含析构函数..它在头文件中实现,然后我有两个派生类,它们在构造函数中增加静态var ..所以我能做什么?
我所试图做的是以下几点:在我的头我有这样的:
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++;
}
我在哪里可以定义计算,所以我不得到误导的数字?谢谢。
,它有时不加起来是因为编译器自动生成你的拷贝构造函数的原因。默认的拷贝构造函数不会增加count变量。 – 2008-12-01 04:42:09