簡體   English   中英

無法分配 C++ 數組

[英]Can't assign C++ array

上下文:需要將 TestTextures3SpriteObj s1 中的頂點設置為 verts1 數組。 給我一個錯誤“表達式必須是可修改的左值”。 復制后,頂點將作為緩沖區數據發送到 GPU,並帶有 OpenGL 和 GLUT。

僅包含相關的代碼摘錄

#pragma once
    class TestTextures3SpriteObj
    {
    public:
        int spriteid;
        int vao;
        int texid;
        float verts[];
    };
    
    const float verts1[] = { 0.5 ,0.5, 0.0, 0.9, 0.5, 0.3, 0.0, 1.0, 0.0,
                            0.5, -0.5, 0.0, 0.3, 0.3, 0.9, 1.0, 1.0, 1.0,
                            -0.5, -0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0,
                            -0.5, 0.5, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
    
    TestTextures3SpriteObj s1;
    
    s1.verts = verts1;

實際上你沒有訪問變量......

如果要訪問單個元素,請使用索引

s1.verts1[0]

如果你想復制使用std::copy

std::copy(verts1, verts1 + 36, s1.verts);
#include <iostream>
using namespace std;

class TestTextures3SpriteObj
    {
    public:
        int spriteid;
        int vao;
        int texid;
        float verts[36]; //assign the size to the array
    };
    
    const float verts1[] = { 0.5 ,0.5, 0.0, 0.9, 0.5, 0.3, 0.0, 1.0, 0.0,
                            0.5, -0.5, 0.0, 0.3, 0.3, 0.9, 1.0, 1.0, 1.0,
                            -0.5, -0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0,
                            -0.5, 0.5, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
int main()
{
    TestTextures3SpriteObj s1;
    int len=sizeof(verts1)/sizeof(verts1[0]);
    //copies the entire array to the object with member verts
    std::copy(verts1, verts1 + 36, s1.verts);
    //printing the values in the s1 object
    for(int i=0;i<len;i++)
    {
        cout<<s1.verts[i]<<" ";
    }
}

為 class 中的數組分配一個大小,然后執行 std::copy 以復制 verts 數組中的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM