Я написал программу, которая была в одном файле, и методы были объявлены в заголовке. Программа изначально отлично работала, когда была в одном файле. Но когда я отделил программу, я продолжал получать случайные вхождения для деструктора одного из классов, который был объявлен в заголовочном файле.
В моем заголовке есть статическая переменная для подсчета количества объектов определенного класса. Всякий раз, когда я создаю объект, я увеличиваю эту переменную. Затем в моем деструкторе я вычитаю 1 из этой переменной, проверяю, равен ли он 0 (имеется в виду последний объект), и что-то делаю. Значение кажется выключенным иногда, я не уверен почему. У меня есть случайные звонки в моем приложении, но я не понимаю, почему это повлияет на то, что я описал выше, спасибо. Любая помощь или понимание приветствуется!
[Update]: есть базовый класс, который содержит деструктор .. который реализован в заголовке, затем у меня есть два производных класса, которые в своем конструкторе увеличивают статическую переменную .. так что мне делать?
Я пытаюсь сделать следующее: в заголовке у меня есть следующее:
class A {
public:
virtual ~A() {
count --;
if (count == 0) { /* this is the last one, do something */ }
}
class B : public A {
public:
B();
}
Тогда в классе B у меня есть
B::B() {
count++;
}
Где я могу определить количество, чтобы не вводить в заблуждение счет? Спасибо.