gpt4 book ai didi

C++ 智能感知 : expression must be a modifiable lvalue

转载 作者:行者123 更新时间:2023-11-30 02:10:55 25 4
gpt4 key购买 nike

我遇到了这两个错误

1>c:\users\owner\documents\visual studio 2010\projects\monopoly\monopoly\xfileentity.cpp(376): error C3490: 'pDrawMesh' cannot be modified because it is being accessed through a const object
IntelliSense: expression must be a modifiable lvalue

我在类里面声明了 pDrawMesh 而不是在一个函数中使用它。
这是我的课

class CXFileEntity
{
......
LPD3DXMESH pDrawMesh;
.....
};

这里是我使用变量的地方

void CXFileEntity::DrawMeshContainer(LPD3DXMESHCONTAINER meshContainerBase, LPD3DXFRAME frameBase) const
{
// Cast to our extended frame type
D3DXFRAME_EXTENDED *frame = (D3DXFRAME_EXTENDED*)frameBase;

// Cast to our extended mesh container
D3DXMESHCONTAINER_EXTENDED *meshContainer = (D3DXMESHCONTAINER_EXTENDED*)meshContainerBase;

// Set the world transform But only if it is not a skinned mesh.
// The skinned mesh has the transform built in (the vertices are already transformed into world space) so we set identity
// Added 24/08/10
if (meshContainer->pSkinInfo)
{
D3DXMATRIX mat;
D3DXMatrixIdentity(&mat);
m_d3dDevice->SetTransform(D3DTS_WORLD, &mat);
}
else
m_d3dDevice->SetTransform(D3DTS_WORLD, &frame->exCombinedTransformationMatrix);


// Loop through all the materials in the mesh rendering each subset
for (unsigned int iMaterial = 0; iMaterial < meshContainer->NumMaterials; iMaterial++)
{
// use the material in our extended data rather than the one in meshContainer->pMaterials[iMaterial].MatD3D
m_d3dDevice->SetMaterial( &meshContainer->exMaterials[iMaterial] );
m_d3dDevice->SetTexture( 0, meshContainer->exTextures[iMaterial] );

// Select the mesh to draw, if there is skin then use the skinned mesh else the normal one
pDrawMesh = (meshContainer->pSkinInfo) ? meshContainer->exSkinMesh: meshContainer->MeshData.pMesh;

// Finally Call the mesh draw function
pDrawMesh->DrawSubset(iMaterial);
}
}

最佳答案

您的成员函数是 const 限定的。不能从 const 限定的成员函数中修改任何成员变量,除非它们被声明为可变的。

您需要使 pDrawMesh 可变,从 DrawMeshContainer 中删除 const 限定,或者找到一些其他方法来完成您想要完成的任何事情。

关于C++ 智能感知 : expression must be a modifiable lvalue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com