实现使用模板化类而不使原始类成为模板的类
Implementing a class that uses a templated class without making original class a template
如果标题令人困惑,请抱歉。希望示例代码会使其更加清晰。
假设我有一个类:
template <typename T>
Class_A {
//has some methods
}
现在我也有一堂课:
Class_B {
vector<Class_A *> array;
void add( Class_A * arg) {
array.push_back(arg);
}
}
所以现在Class_B行不通,因为我没有使用像 T 参数那样的参数来表示我的class_A参数。我的问题是有没有办法在不使Class_B模板的情况下做到这一点。理想情况下,向量能够容纳Class_A<int>
和Class_A<string>
之类的东西,所以我真的不想Class_B模板化。
任何想法将不胜感激!
从class A_Base
派生,使用 destructor 和相关方法作为virtual
。使用此A_Base
,只要您不需要模板。例如
template<typename T>
class Class_A : public A_Base {
~Class_A() override;
// Other virtual methods
};
在不Class_B
模板的情况下执行此操作的唯一方法是使类型是多态的;也就是说,让模板类Class_A
继承另一个类(例如,Class_A_base
(并存储指向Class_A_base
的指针。
如果您更多地解释一下您尝试使用此模式实现的目标,则可能会有更好的解决方案。
相关文章:
- 如果没有malloc,链表实现将失败
- 如何在c++中实现处理器调度模拟器
- 如何在c++中使用引用实现类似python的行为
- 实现无开销push_back的最佳方法是什么
- 使用简单类型列表实现的指数编译时间.为什么
- 如何在BST的这个简单递归实现中消除警告
- 实现一个在集合上迭代的模板函数
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 将浮动的heightmap数组导出为16位原始值
- 实现使用模板化类而不使原始类成为模板的类
- 如何正确实现具有原始指针的类的复制构造函数?
- 返回原始值的QuickSort实现
- 如何在Visual C 2010中实现C 原始字符串文字
- 在C++中实现原始递归组合器
- C++对原始STL实现中"construct"方法逻辑的理解
- 从原始指针到 boost::shared_ptr:使用 share_from_this 实现树的转换
- 实现数据结构时的智能指针或原始指针
- C++哈希函数,原始的 haser 即哈希<int xkey>是如何实现的
- 为什么std::shared_ptr实现中需要两个指向托管对象的原始指针
- 原始指针的unique_ptr::reset的等价实现