通过boost shared_ptr的多态性
Polymorphism through boost shared_ptr?
我有一个类层次结构,其中一个抽象父(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());
}
但我收到的错误表明我不能这样做。我如何绕过限制来实现相同的行为?
如果您展示了OtherB
和OtherC
的一些内容,这将有所帮助,但我在std::shared_ptr
中也遇到过类似的问题,如果正在实例化的类具有私有析构函数(这通常是一个很好的设计决策)。您可以通过在将new
的结果传递给boost::shared_ptr<Other>
之前将其显式强制转换为Other*
来解决此问题。
相关文章:
- 多态性和功能结合
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- C++boost序列化多态性问题
- 如何查找哪个类对象位于数组的特定索引上(多态性)
- 如何在多线程中正确使用unique_ptr进行多态性?
- 具有智能指针的多态性
- 在 C++ 中在堆栈上创建实例时如何保持多态性?
- 继承/多态性 - 我是否被迫使用"protected"变量?
- C++ 多态性在代码::块 17.12 中不起作用
- C++ 泛型和多态性:这种模式可行吗?
- 为什么我们实际上需要运行时多态性?
- 如何在这个简单的最小示例中实现多态性?
- 如何使用静态多态性在 int 和指针类型之间进行转换?
- 无法初始化已知大小的矢量指针,该大小不会因多态性而更改
- 运行时多态性和dynamic_cast需要澄清
- 如何调用指针类型的方法(禁用多态性)?
- 从基类调用函数的多态性
- c++在没有虚拟析构函数的多态性中共享ptr
- ptr和多态性