C++ 表达式必须是可修改的值

标签 c++ struct directx expression structure

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];然后在一个函数中我想定义它,以便给它特定的值,但是我得到以下错误: 表达式必须是可修改的值。 请帮忙

最佳答案

在 C++ (2003) 初始化中,像 StructX var = { ... }; 只能在定义变量时使用。在您的代码中,PlaneVertices 用于赋值表达式。那里不允许初始化语法。这是语法错误。

稍后您定义一个局部变量 PlaneIndices,该变量将在方法退出后被丢弃。

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

相关文章:

c++ - 如何在声明和定义中拆分静态 lambda?

c - 队列字母无效

c - 通过函数传递动态数组结构

c++ - 将未签名的char Buffer拆分并存储到结构中

c++ - 在 eclipse、Red Hat Linux 中运行 c++ 项目时出现问题

c - 返回字符数组错误,返回值奇怪

c++ - Direct3D 和 iPhone 加速度计矩阵

c++ - 请推荐一个适用于XP、Win7、Win8的二维动画c++工具

c++ - DirectX - 顶点缓冲区如何工作?

c++ - 将重载 new 返回的 void * 分配给用户定义类型的指针时没有错误