gpt4 book ai didi

c++ - 具有不同数据类型的纯虚拟方法

转载 作者:太空宇宙 更新时间:2023-11-04 14:40:11 25 4
gpt4 key购买 nike

我正在为我的容器类创建一个基类来派生,这样我就可以保持一致的接口(interface)。它目前看起来像这样:

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() 可能需要彼此具有不同的返回类型。如果基类中每个不同的返回类型都没有模板参数,我怎么能给派生类一些空间来改变这种事情呢?

编辑:

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

最佳答案

提供一个特性,专门用于您需要不同结果的情况。

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;
};

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com