首页 > 解决方案 > C++ 中的对象数组

问题描述

我正在尝试使用 openGL c ++ 下棋,现在我已经创建了 pawn 对象,它的构造函数采用 unsigned int 参数。因此,我尝试创建这些棋子的数组,而我发现这样做的唯一可行方法是:

Pawn *pawn[n];

for (int i = 0; i < n; i++) {
    pawn[i] = new Pawn(Unsigned int var);
}

例如,要调用 pawn [0] 的函数,我必须这样做:

pawn[0]->function(parameters);

这是 Pawn 类:

class Pawn
{
private:

    float vertices [16] = {
        //position       //text coord
        -0.08f, -0.10f,   0.0f, 0.0f,
         0.08f, -0.10f,   1.0f, 0.0f,
         0.08f,  0.10f,   1.0f, 1.0f,
        -0.08f,  0.10f,   0.0f, 1.0f

    };

    GLuint indices[6] {
        0, 1, 2,
        0, 2, 3
    };

    unsigned int shaderID, VBO, VAO, EBO, texture;

public:

    glm::vec2 Position = glm::vec2(0.0f, 0.0f);

    Pawn () {}

    Pawn(GLuint shaderID) {
        ...
    }
    
    ~Pawn() {
         ...
    }

    void setTexture();

    void draw (glm::vec2 position);

};

我也试过这个:

Pawn pawn[8];

for (int i = 0; i < 8; i++) {
    pawn[i] = Pawn(shaderID);
}

但是当我运行时它不起作用。

我想知道这种方法是否有效,如果有效,为什么有效,因为我不明白。谢谢你的帮助

标签: c++

解决方案


推荐阅读