(对于模糊的标题感到抱歉)
我有一个带有各种派生类D1,D2等的基类B.
此外我有一个模板
template <class T> Storage;
现在每个派生类都有不同版本的存储类
class D1 : public class B {
Storage<int> *myStorage;
void action1();
void specific_D1_action();
// other stuff...
}
class D2 : public class B {
Storage<float> *myStorage;
void action1();
void specific_D2_action();
// other stuff...
}
D1::action1()
和D2::action1()
使用各自的myStorage
并拥有完全相同的代码。但是,相应myStorage
个对象的实际模板参数不同。
是否可以为所有版本的存储提供一种“基类”, 这样我就可以在基类B中定义myStorage和action1(而不是D1,D2,...)以避免代码重复?
我认为由于派生类中的特定操作,我无法“模糊”基类B.
(这个例子非常简单 - 在实际情况下,模板参数是复杂的类)
答案 0 :(得分:8)
创建一个继承自B
基类并获取模板参数的基类?
class B
{
// ...
};
template<typename T>
class DerivedBase : public B
{
Storage<T> *myStorage;
void action1();
};
class D1 : public DerivedBase<int>
{
void specific_D1_action();
};
class D2 : public DerivedBase<float>
{
void specific_D2_action();
};