【发布时间】:2015-07-05 06:29:35
【问题描述】:
我有一个 std::list 容器,其中包含 A 类的共享指针。 我有另一个类,比如 B,它是从 A 派生的。
我目前有这样的代码来填充容器:
shared_ptr<B> b = shared_ptr<B>(new B);
container.push_back(b)
这很好用。
问题是,我怎样才能找回最初被推回容器的 shared_ptr ?
执行以下操作
list<shared_ptr<A> >::iter anIter = myContainer.begin();
shared_ptr<B> aB = *(anIter);
不要编译。我得到错误
Cannot convert 'A * const' to 'B *'
有什么建议吗?
【问题讨论】:
-
我不确定,但为什么不只是
shared_ptr<A> b = shared_ptr<A>(new B);? -
Anton,客户端代码需要一个 B 指针。
标签: c++ inheritance shared-ptr