我想将任何一种对象(对象,对象等)放入一个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
施加严格的约束。