我有一个类层次结构,其中一个抽象父(A)类有两个子(B和C)。
这些类的重点是返回一个boost :: shared_ptr,它引用另一个类hirarchy。返回的对象是初始化数据成员。其他是OtherB和OtherC的父类。
//A.h
class A{
public:
virtual boost::shared_ptr<Other> getMemManagedPolyObject();
private:
};
//B.cpp
boost::shared_ptr<Other> B::getMemManagedPolyObject(){
return boost::shared_ptr<Other>(new OtherB());
}
//C.cpp
boost::shared_ptr<Other> C::getMemManagedPolyObject(){
return boost::shared_ptr<Other>(new OtherC());
}
但我得到的错误表明我不能这样做。如何绕过限制来实现相同的行为?
答案 0 :(得分:0)
如果您展示了OtherB
和OtherC
的某些内容会有所帮助,但如果实例化的类具有私有析构函数(通常是std::shared_ptr
,我会遇到new
的类似问题一个好的设计决定)。您可以通过明确地将Other*
的结果投放到boost::shared_ptr<Other>
,然后再将其传递给{{1}}来解决此问题。