我有一个类层次结构,我想从中共享并将其转换为特定的类类型。所以,我想这一点:如何识别类类型以将shared_ptr转换为该类型
class A : public std::enable_shared_from_this
{
std::shared_ptr<A> getSharedFromThis()
{
return std::static_pointer_cast<A>(shared_from_this());
}
};
class B : public A
{
std::shared_ptr<B> getSharedFromThis()
{
return std::static_pointer_cast<B>(shared_from_this());
}
};
在超我可以写一个模板变量,但它仍然是不冷静:
template <typename T>
std::shared_ptr<T> getSharedFromThis()
{
return std::static_pointer_cast<T>(shared_from_this());
}
我怎样才能使通用的,因此,它会明白,这是在课堂上B
并将其转换为B
shared_ptr
,现在在同一层次结构中的100个类中编写相同的逻辑。
正在使用CRTP合理的解决方案吗? – TartanLlama
@TartanLlama与CRTP我将继承所有层次结构中的同一个类。 – Narek
顺便说一句,如果你想使用'std :: shared_from_this',那么你必须从'std :: enable_shared_from_this'派生你的类。 – Nawaz