Я пытаюсь найти номер динамически и статически созданных объектов. Я получаю ошибки, что переменная myheap не объявлена.Ошибка объявления элемента статического класса
#include<iostream.h>
#include<stdlib.h>
class A {
public:
static int x; //To count number of total objects. incremented in constructor
static int myheap; //To count number of heap objects. Incremented in overloaded new
void* operator new(size_t t) {
A *p;
p=(A*)malloc(t);
myheap++;
return p;
}
void operator delete(void *p) {
free(p);
myheap--;
}
A() {
x++;
}
~A() {
x--;
}
};
int A::x=0;
int A::myheap=0;
int main() {
A *g,*h,*i;
A a,c,b,d,e;//Static allocations 5
g= new A();//Dynamic allocations 3
h= new A();
i= new A();
cout<<"Total"<<A::x<<'\n';
cout<<"Dynamic";
cout<<'\n'<<"HEAP"<<A::myheap;
delete g;
cout<<'\n'<<"After delete g"<<A::x;
cout<<'\n'<<"HEAP"<<A::myheap;
delete h;
cout<<'\n'<<"After delete h"<<A::x;
cout<<'\n'<<"HEAP"<<A::myheap;
delete i;
cout<<'\n'<<"After delete i"<<A::x;
cout<<'\n'<<"HEAP"<<A::myheap;
}
После фиксации myheap к A :: myheap он работал. Я обновил код и его работу. Спасибо всем Когда я не возвращал p из нового, он раздавал предупреждение и составлял. Но дал основной дамп на исполнение. Любая причина? – Sandeep
Помимо точки, но по-прежнему очень актуальной, используйте версию файла без заголовка, то есть iostream & cstdlib вместо iostream.h & stdlib.h, последний файл заголовка C, который вы используете в проекте C++, для этого удалите .h и добавьте ac перед заголовком, чтобы дать вам заголовочный файл C++. Те, которые вы используете, являются архаичными, и хотя они могут не указывать на ошибки в коде, а на современных компиляторах, и в будущем определенно может быть проблемой. Для полного объяснения того, что я имею в виду, обратитесь к этой статье http://members.gamedev.net/sicrane/articles/iostream.html – rocknroll