提问者:小点点

std::BAD_ANY_CAST当强制转换到自定义类的指针类型时[closed]


我正在将各种数据类型的项存储在std::vector. 到目前为止,这一直运作良好,包括与我所做的其他类。 但是,会出现std::bad_any_cast,从而拒绝正确强制转换。

这是类存储的内容:

class MSAARenderFrame
{
public:
    unsigned int RenderFrameWidth, RenderFrameHeight, ScreenFBOID, MSAA_FBOID, MSAA_RBOID, MSAATextureID, MSAASampleCount;
    std::shared_ptr<Mesh> RenderPlane;
}

然后,我将MSaArenderFrame*,RenderFrameOne推回到std::Vector>,如下所示。

MainShaderGroup->ShaderGroupData.push_back(RenderFrameOne);

然后,我尝试将其强制转换回MSaArenderFrame*,如下所示。

MSAARenderFrame* TempRenderFrameOne = std::any_cast<MSAARenderFrame*>(InSG->ShaderGroupData[3]);

这失败了,这是奇怪的,因为我的自定义相机类型工作完美。

Camera* TempMainCamera = std::any_cast<Camera*>(InSG->ShaderGroupData[0]);

谢谢你的帮助。


共1个答案

匿名用户

结果是程序中的其他地方,ShaderGroupData向量被修改了,所以错误的项目出现在错误的位置。