Я работаю с OpenGL, и я пытаюсь создать простой наземный класс, который рисует прямоугольник.Инициализация массива заголовка C++ в конструкторе
У меня есть класс с именем Vertex
:
class Vertex
{
public:
Vertex(
glm::vec3 _position,
glm::vec3 _color = glm::vec3(0.0, 0.0, 0.0),
glm::vec3 _normal = glm::vec3(0.0, 1.0, 0.0),
glm::vec3 _texture = glm::vec3(0.0, 0.0, 0.0));
void setNormal(glm::vec3 _normal);
void setTexture(glm::vec3 _texture);
virtual ~Vertex();
protected:
private:
glm::vec3 position;
glm::vec3 color;
glm::vec3 normal;
glm::vec3 texture;
};
И это мой Ground
класс:
class Ground
{
private:
double widht;
double length;
double y;
int* indexes;
Vertex* vertices;
public:
Ground(double _width, double_length, double y);
}
И вот что я хочу сделать в конструкторе Ground:
this->indexes = {0, 3, 1, 1, 3, 2};
this->vertices = {
Vertex(glm::vec3(0 - width/2, y, 0-length/2)),
Vertex(glm::vec3(0 - width/2, y, 0+length/2)),
Vertex(glm::vec3(0 + width/2, y, 0+length/2)),
Vertex(glm::vec3(0 + width/2, y, 0-length/2))
}
Я получаю эту ошибку при компиляции:
error: cannot convert ‘<brace-enclosed initializer list>’ to ‘Vertex*’
Теперь я знаю, что я мог бы жестко запрограммировать все это, но я хочу решение для общего определения заголовка класса ClassX * и инициализации конструктора.
Если вы используете указатель, вы должны выделить свою собственную память. Я предлагаю вам использовать вектор. –
hmm ... Ну, я также пробовал с помощью int * this-> indexes = new int [6]; this-> indexes = {0, 3, 1, 1, 3, 2}; // это не сработало this-> indexes [0] = 0; это-> индексы [1] = 3; // и т. д. этот^работал, но я не понимаю, почему первый не сделал, и я хочу понять общую концепцию. Прошу научить меня, как выделить память, после чего я могу использовать циклы для инициализации – user1840302