我正在将各种数据类型的项存储在std::vector
这是类存储的内容:
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]);
谢谢你的帮助。
结果是程序中的其他地方,ShaderGroupData向量被修改了,所以错误的项目出现在错误的位置。