【发布时间】:2013-11-21 09:21:16
【问题描述】:
我有一个类层次结构,其中一个抽象父 (A) 类有两个子 (B 和 C)。
这些类的重点是返回一个 boost::shared_ptr,它指向另一个类层次结构。返回的对象正在初始化一个数据成员。 Other 是 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());
}
但我收到错误提示我无法执行此操作。如何绕过限制来实现相同的行为?
【问题讨论】:
-
return boost::shared_ptr<Other>(new OtherB); -
@KerrekSB 这可能是因为你使用了 std::shared_ptr 而我使用了 boost?
-
@user997112:我对此表示怀疑。两者非常相似。
标签: c++ inheritance boost polymorphism