[英]C++ Template Class with Static Members - Same for all types of the class
如果您有一个带有 static 变量的模板 class,是否有任何方法可以使 class 的所有类型的变量都相同,而不是每个类型都相同?
目前我的代码是这样的:
template <typename T> class templateClass{
public:
static int numberAlive;
templateClass(){ this->numberAlive++; }
~templateClass(){ this->numberAlive--; }
};
template <typename T> int templateClass<T>::numberAlive = 0;
和主要的:
templateClass<int> t1;
templateClass<int> t2;
templateClass<bool> t3;
cout << "T1: " << t1.numberAlive << endl;
cout << "T2: " << t2.numberAlive << endl;
cout << "T3: " << t3.numberAlive << endl;
这输出:
T1: 2
T2: 2
T3: 1
所需的行为是:
T1: 3
T2: 3
T3: 3
我想我可以用某种全局 int 来做到这一点,任何类型的 class 递增和递减,但这看起来不太合逻辑,或者面向对象
谢谢任何可以帮助我实现这一点的人。
让所有类派生自公共基类 class,其唯一职责是包含 static 成员。
class MyBaseClass {
protected:
static int numberAlive;
};
template <typename T>
class TemplateClass : public MyBaseClass {
public:
TemplateClass(){ numberAlive++; }
~TemplateClass(){ numberAlive--; }
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.