我正在为我的容器类派生一个基类,以便可以维护一致的接口。当前看起来像这样:

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()
    {
    }
};


但是,对于我的某些派生类,Foo()Bar()可能需要彼此具有不同的返回类型。在基类中没有每种返回类型的模板参数的情况下,如何为派生类提供一些空间来更改此类事情?

编辑:

派生类使用的类型可能完全不同且不变。实际上,除方法名称外,不保证派生类具有任何共同点。

最佳答案

return不同的数据类型是不可能的。唯一的方法是使方法template受限制,因为virtual方法不能为模板。

关于c++ - 具有不同数据类型的纯虚拟方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5676413/

10-11 18:59