具有独特静态成员的 C++ 模板

gex*_*ide 2 c++ templates static-members

模板类的每个实例都会复制所有静态成员。如果我想要一个对于所有实例仅存在一次的静态成员,我该怎么办?在类模板之外使用普通的静态字段?可以,但看起来不优雅,因为与模板类不再有关联。有没有办法以某种方式将这种独特的静态成员与模板类相关联?

Cho*_*ett 5

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

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

class Parent
{
public:
  static int commonStatic;
};

template <typename T>
class MyTempl : public Parent
{
  static int nonSharedStatic;
};
Run Code Online (Sandbox Code Playgroud)

  • @LuchianGrigore - OP 希望在模板类的所有专业化之间共享一个变量,但与这些类相关联。在我看来,你也许可以通过命名空间或继承来做到这一点;我看不到其他方法。你心里有一个吗? (2认同)