我想将任何一种对象(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/