我有一个模板化的类,想从它外部访问一个公共(public)静态变量,但如果不实例化模板,我想不出任何方法。这段代码:template<class T>class TemplatedClass { public: static const int static_member = 10;};...int i = TemplatedClass::static_member;产生以下错误:“'template class TemplatedClass' used without template parameters.”如果我在访问变量时实例化类:int i = TemplatedClass<int>::static_member;错误消失了。我宁愿不必在上下文中实例化模板,因为它只是为了抑制错误而使用虚拟类型参数并没有真正意义。如果必须的话,最好使用的虚拟类型是什么?我尝试了 和 ,但都没有奏效。 最佳答案 无法完成,因为特化可能会覆盖该值,即:template<class T>class TemplatedClass : public BaseClass{ static const int value = 42;};template<>class TemplatedClass<StarTrek>{ static const int value = 47;}因此,您将获得不同的值:TemplatedClass<StarTrek>::value != TemplatedClass<void>::value如果值要相等,我强烈建议您添加一个非模板基类:class BaseClass {public: static const int value = 42;};template<class T>class TemplatedClass : public BaseClass{ ...}实例化或显式虚拟类型(即 void)可能会起作用,但您可能会收到编译错误,具体取决于您如何使用模板参数。int x = TemplatedClass<void>::value;因此, 请 编写清楚地显示您的意图的代码,即所有实例化的公共(public)值不应该在依赖于类型的模板类中。如果您不能这样做,请更详细地解释您要做什么。关于c++ - 在不实例化模板的情况下访问模板化类的公共(public)静态成员?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14847141/ 10-12 14:47