gpt4 book ai didi

具有静态成员的 C++ 模板类 - 对所有类型的类都相同

转载 作者:IT老高 更新时间:2023-10-28 21:38:52 26 4
gpt4 key购买 nike

如果您有一个带有静态变量的模板类,有没有办法让该变量在该类的所有类型中都相同,而不是每个类型?

目前我的代码是这样的:

 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 来实现,该类的任何类型都会递增和递减,但这似乎不太合乎逻辑或面向对象

感谢任何可以帮助我实现这一点的人。

最佳答案

让所有类都派生自一个公共(public)基类,其唯一职责是包含静态成员。

class MyBaseClass {
protected:
static int numberAlive;
};

template <typename T>
class TemplateClass : public MyBaseClass {
public:
TemplateClass(){ numberAlive++; }
~TemplateClass(){ numberAlive--; }
};

关于具有静态成员的 C++ 模板类 - 对所有类型的类都相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10036770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com