struct PLANE {FLOAT X, Y, Z; D3DXVECTOR3 Normal; FLOAT U, V;};

class PlaneStruct
{
public:PLANE PlaneVertices[4];
public:DWORD PlaneIndices;

void CreatePlane(float size)
{
    // create vertices to represent the corners of the cube
    PlaneVertices =
    {
        {1.0f * size, 0.0f, 1.0f * size, D3DXVECTOR3(0.0f, 0.0f, 1.0f), 0.0f, 0.0f},    // side 1
        {-1.0f * size, -0.0f, 1.0f * size, D3DXVECTOR3(0.0f, 0.0f, 1.0f), 0.0f, 1.0f},
        {-1.0f * size, -0.0f, -1.0f * size, D3DXVECTOR3(0.0f, 0.0f, 1.0f), 1.0f, 0.0f},
        {1.0f * size, -0.0f, -1.0f * size, D3DXVECTOR3(0.0f, 0.0f, 1.0f), 1.0f, 1.0f},
    };

    // create the index buffer out of DWORDs
    DWORD PlaneIndices[] =
    {
        0, 2, 1,    // side 1
        0, 3, 2
    };
}
};


这是我的“平面”结构代码,我只有一个问题,如果您在顶部看到它是PLANE PlaneVertices [4];然后在一个函数中,我想对其进行定义,以便为其指定特定的值,但是出现以下错误:
    表达式必须是可修改的值。
请帮忙

最佳答案

您不能像这样为您的PlaneVertices数组分配值,只有在使用{}表示法对其进行定义时,才能使用它。尝试使用for循环将每个元素分配给数组的每个个体元素

编辑:响应您的评论,创建您的PLANE结构的实例,并为其分配值,使其具有它。然后使用以下命令将其分配给PlaneVertices数组中的第一个索引

    PlaneVertices[0] = // instance of PLANE struct you have just created


然后对数组中所需的其余3个PLANE实例重复上述操作,将其添加到PlaneVertices的1,2和3索引中。为了充分说明,我将使用您提供的数据为您做第一个

    PLANE plane_object;
    plane_object.X = 1.0*size;
    plane_object.Y = 0.0;
    plane_object.Z = 1.0*size;
    plane_object.Normal = D3DXVECTOR3(0.0f, 0.0f, 1.0f);
    plane_object.U = 0.0;
    plane_object.V = 0.0;
    PlaneVertices[0] = plane_object;


然后,您需要为每个要添加的PLANE重复操作。也不要选择与您的PlaneIndices问题有关的其他答案。

关于c++ - C++表达式必须是可修改的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11273076/

10-11 22:47