我希望能够计算属于同一类层次结构的类的实例。
例如,假设我有以下内容:
class A;
class B: public A;
class C: public B;然后我有了这个代码
A* tempA = new A;
B* tempB = new B;
C* tempC = new C;
C* tempC2 = new C;
printf(tempA->GetInstancesCount());
printf(tempB->GetInstancesCount());
printf(tempC->GetInstancesCount());结果应打印出来
1 1 2理想情况下,计数应该在内部完成。每个类,而不是某种类型的管理器,都应该知道它有多少实例。
有什么想法吗?
谢谢!
发布于 2009-04-21 13:54:20
所提出的解决方案存在一个问题:当您创建B时,将自动调用A构造函数,从而递增A的计数。
class A
{
public:
A(bool doCount = true)
{
if (doCount)
++instanceCount_;
}
static std::size_t GetInstanceCount()
{
return instanceCount_;
}
virtual ~A(){}
private:
static std::size_t instanceCount_;
};
class B: public A
{
public:
B(bool doCount = true):A(false)
{
if (doCount)
++instanceCount_;
}
static std::size_t GetInstanceCount()
{
return instanceCount_;
}
private:
static std::size_t instanceCount_;
};
std::size_t A::instanceCount_ = 0;
std::size_t B::instanceCount_ = 0;https://stackoverflow.com/questions/772655
复制相似问题