Max*_*xpm 0 c++ oop inheritance templates virtual-functions
我正在为我的容器类创建一个基类,因此我可以维护一致的接口.它目前看起来像这样:
template <typename Datatype>
class BaseClass
{
public:
virtual Datatype Foo() = 0;
virtual Datatype Bar() = 0;
};
template <typename Datatype>
class DerivedClass: public BaseClass<Datatype>
{
public:
virtual Datatype Foo()
{
}
virtual Datatype Bar()
{
}
};
Run Code Online (Sandbox Code Playgroud)
然而,我的一些派生类,Foo()并Bar()可能需要具有彼此不同的返回类型.如果基类中没有每个不同返回类型的模板参数,我如何为派生类提供一些改变这种东西的空间?
编辑:
派生类使用的类型可能完全不同且不变.实际上,除了方法名称之外,派生类不保证具有任何类型的共同点.
提供一个专门针对您需要不同结果的特征的特征.
template <typename Datatype>
struct BaseTraits
{
typedef Datatype FooResult;
typedef Datatype BarResult;
};
template <typename Datatype, typename Traits = BaseTraits<Datatype> >
class BaseClass
{
public:
virtual Traits::FooResult Foo() = 0;
virtual Traits::BarResult Bar() = 0;
};
Run Code Online (Sandbox Code Playgroud)