c++ - 访问模板化类的非模板基类的静态数据

标签 c++ templates inheritance

模板类派生自具有静态数据成员的非模板类。为什么我不能在不指定模板参数的情况下访问它?实际上,我可以在没有模板参数的情况下访问模板类中的任何方法或数据吗?

class CNonTemplateBase{

public:
    static int some_data;

};

int CNonTemplateBase::some_data = 10;

template<typename T> class CTemplateClass : public CNonTemplateBase{};

...
...

int a = CTemplateClass<int>::some_data;    //OK
int b = CTemplateClass::some_data;         //ERROR

最佳答案

这是因为 CTemplateClass 本身并不存在。必须首先使用提供的模板参数生成模板类。

关于c++ - 访问模板化类的非模板基类的静态数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58875664/

相关文章:

c# - 将 c# 结构传递给非托管 C++ DLL 时出现 SafeArrayTypeMismatchException

c++ - 尝试更改游戏状态时出现段错误

c++ - 模板类中具有未知类型属性的默认构造函数

c++ - 我怎样才能从模板派生两次,并让子类交互?

java - 从子类的arraylist到达父类方法

c++ - 从基类函数调用派生类函数

c++ - 绑定(bind)后编译器抛出错误 "expected initializer before int"一直在尝试学习 c++,我只是一直卡住

javascript - 使用 CSS 缩放所有 svg 元素

c++ - 在类a声明之前从类a继承类b

c++ - PlayFunction 在 DLL 中不起作用,但在独立 exe 中起作用