我有以下代码:
struct Entity; // Simplified just for example
struct BoxCollider
{
std::shared_ptr<Entity> parentPtr;
BoxCollider(std::shared_ptr<Entity> parent) :
parentPtr(parent)
{}
};
struct MyObject : public Entity, public BoxCollider, std::enable_shared_from_this<MyObject>
{
MyObject() :
BoxCollider(this->shared_from_this())
{}
}
而且,它没有按预期工作 - 抛出内存异常,std::bad_weak_ptr
。我如何解决它?
我需要那个指针是因为我使用的Physics Engine
需要up-casted(std::dynamic_pointer_cast
)Entity
指针;其中BoxCollider
来自。{1}}。在我决定从原始指针转向聪明指针之前,一切正常。