I\'d like to be able to count instances of classes that belong in the same class hierarchy.
For example, let\'s say I have this:
class A;
class B: pu
A very crude way would be:
class A
{
public:
static int m_instanceCount;
A(bool derivedInstance = false)
{
if(! derivedInstance)
{
++m_instanceCount;
}
}
virtual ~A()
{
--m_instanceCount;
}
virtual int GetInstanceCount()
{
return m_instanceCount;
}
};
int A::m_instanceCount = 0;
class B : public A
{
public:
static int m_instanceCount;
B(bool derivedInstance = false): A(true)
{
if(! derivedInstance)
{
++m_instanceCount;
}
}
virtual ~B()
{
--m_instanceCount;
}
virtual int GetInstanceCount()
{
return m_instanceCount;
}
};
int B::m_instanceCount = 0;
class C : public B
{
public:
static int m_instanceCount;
C(): B(true) {++m_instanceCount;}
virtual ~C()
{
--m_instanceCount;
}
virtual int GetInstanceCount()
{
return m_instanceCount;
}
};
int C::m_instanceCount = 0;
void main(int argc,char *argv[])
{
A* p1 = new A;
B* p2 = new B;
C* p3 = new C;
C* p4 = new C;
A* p5 = new A;
delete p5;
std::cout<GetInstanceCount()<<"\n";
std::cout<GetInstanceCount()<<"\n";
std::cout<GetInstanceCount()<<"\n";
}