当我尝试使用make函数来设置网格时,我得到错误E0137。 getMeshes效果很好。 当我试图做一些像
这样的想法RpMesh* a = header->GetMeshes();
a = newMeshes;
这也不起作用。
struct RpMeshHeader
{
unsigned int flags;
unsigned short numMeshes;
unsigned short serialNum;
unsigned int totalIndicesInMesh;
unsigned int firstMeshOffset;
RpMesh *getMeshes(void) { return (RpMesh*)(this + 1); }
void setMeshes(RpMesh* newMesh)
{
(RpMesh*)(this + 1)= newMesh;
}
bool isValidMeshId(int meshId)
{
return (meshId != NULL && numMeshes >= meshId);
}
}
答案 0 :(得分:0)
这里的错误很清楚:
void setMeshes(RpMesh* newMesh)
{
(RpMesh*)(this + 1)= newMesh;
}
错误:左值作为赋值的左操作数
以下内容不是lvalue
,因此您无法分配给它。
(RpMesh*)(this + 1)
您链接的github将setMeshes显示为以下
void setMeshes(RpMesh* newMeshes)
{
RpMesh* meshes = (RpMesh*)(this + 1);
meshes = newMeshes;
}
在语法方面很好。首先,您创建一个指针meshes
,您为其分配(this+1)
的地址(如果this
是一个数组,this+1
将指向数组中的下一个元素)但是演员!
您将这个假设的下一个元素在RpMeashHeader
到RpMesh
的数组中使用C风格的强制转换(在这种情况下afaik默认为reinterpret_cast
,请参阅{{3} }了解更多信息)
但是这个内存每次都被分配了吗?这似乎不安全。