具有唯一静态成员的 C++ 模板

标签 c++ templates static-members

模板类的每个实例都复制了所有静态成员。如果我想要一个对所有实例只存在一次的静态成员,我应该怎么做?在类模板之外使用普通的静态字段?会工作,但似乎不雅,因为没有更多与模板类的关联。有没有办法以某种方式将这种独特的静态成员与模板类相关联?

最佳答案

没有;每个模板类都是一个完全独立的对象。

你可以做的是用静态成员创建一个共同的祖先类:

class Parent
{
public:
  static int commonStatic;
};

template <typename T>
class MyTempl : public Parent
{
  static int nonSharedStatic;
};

关于具有唯一静态成员的 C++ 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12092543/

相关文章:

c++ - 结构到文件然后再返回

c++ - 为什么声明顺序对于将成员函数指针作为模板参数传递很重要?

c++ - 模板类不同的返回类型取决于类参数

c++ - 如何使用参数包参数 typedef 函数指针类型

c++ - 卡在 C++ 模板上——从 std::map 派生

c++ - 将默认值列表传递给模板类

C++ 为什么我可以在类定义中初始化静态 const char 但不能初始化静态 const double?

c++ - 从派生类访问静态常量变量

c++ - 在 C/C++ 中,如何声明指向返回指向 int 值数组指针的函数的指针?

java - 跨多个线程的可变静态变量