gpt4 book ai didi

c++ - 模板方法覆盖非模板方法

转载 作者:搜寻专家 更新时间:2023-10-31 01:57:34 24 4
gpt4 key购买 nike

我想将任何类型的对象(Object、Object 等)放入一个 shared_ptr 中。所以我创建了基类并使用了 shared_ptr。

但是,我该如何声明

T getMember();

在基类中以便我可以调用 ObjectBase.getMember?

class ObjectBase
{
public:
//virtual getMember HOWTO?
};

template<typename T>
class Object : public ObjectBase
{
public:
Object(T x):member(x) { }
T getMember() { return member; }

private:
T member;
};

最佳答案

你不能。这样的声明看起来应该如何,它可以返回各种类型?这是不可能的。你必须投 ObjectBase*到正确的Object<T>*然后使用 getMember功能。只有所有 T 才有可能共享一个公共(public)基类,所以你可以返回一个指向它的指针。但这会对 T 施加严格的限制。 .

关于c++ - 模板方法覆盖非模板方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5457423/

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