c++ - 访问父类的子模板类的数据

标签 c++

#include <iostream>
#include <vector>
#include <memory>
#include <unordered_map>

using namespace std;

struct A { void what_type() { cout<<"A"<<endl; }};
struct B { void what_type() { cout<<"B"<<endl; }};

class MyCommonAncestor {

}; 

template <class T> 
class MyTemplateClass : public MyCommonAncestor {

   public:  
       std::unordered_map<int, T> myx; 
};

int main() {
    vector<shared_ptr<MyCommonAncestor>> myVector; 
    myVector.push_back(make_shared<MyTemplateClass<A>>()); 
    myVector.push_back(make_shared<MyTemplateClass<B>>()); 

   for (auto& x: myVector)
       x->myx; // just for the shake of this example
 return 0;
}
我如何找到一种方法来从myx中实际访问MyTemplateClass成员变量,从而保持模板的使用,因为我需要它。
我收到以下错误:
error: ‘class MyCommonAncestor’ has no member named ‘myx’

最佳答案

您可以将指针动态转换为模板类。但是继承的要点是将共性放入您的基类中,否则它们存在的意义是什么。

关于c++ - 访问父类的子模板类的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65075389/

相关文章:

c++ - OpenCV - 去除凸性缺陷(Python 到 C++)

c++ - 显式加载 DLL

.net - c++ fatal error c1083项目以前很好,现在怎么办?

c++ - 为什么在堆栈仍有元素时跳过 "if stack not empty"条件?

c++ - 对于像 C++ 这样的现实世界语言,时间复杂度有一致的定义吗?

c++ - 使用给定的指数在智能卡上生成 key

c++ - 如何修复此 Pthread 示例中的错误?

c++ - 为什么 GL_LEQUAL 推荐用于 GL 深度函数(为什么它对我不起作用)?

c++ - Operator() 的部分特化

c++ - 将两个特征向量乘以相应的元素