我有:
class A : public std::enable_shared_from_this<A>
{...};
class B : public A
{...};
void doCoolStuff(std::weak_ptr<A> obj)
{...}
void doCoolStuff(std::weak_ptr<B> obj)
{
...
doCoolStuff(std::static_pointer_cast<A>(obj.lock())); (1)
}
然后在 B 函数中:
void B::doReallyCoolStuff()
{
doCoolStuff(std::static_pointer_cast<B>(shared_from_this())); (2)
}
所以问题是:
- 编译器错误:
error C2440: 'static_cast' : cannot convert from 'B *const ' to 'A *'
- 编译器错误:
error C2668: ambiguous call to overloaded function
我不明白如何解决它们,因为:
- 我认为它与 shared_from_this 有某种联系,因为这是const 指针。但是如果没有 const_cast,我不知道如何处理这种情况。
- 我不知道函数是否可以被不同类型的弱指针重载。
搭建环境:MSVS 2013 express
请帮忙。谢谢