объявление ошибки несовместимо с ++ (массив)

0

Привет, меня попросили установить мои массивы, содержащие информацию 3D куба, в "null", чтобы их можно было использовать для получения данных, необходимых для их рисования из файла txt, но они запустили эту ошибку.

Любая помощь будет оценена по достоинству.

файл заголовка куба

class Cube
{

private:

    static int numVertices, numColours, numIndices;
    static Vertex indexedVertices[];
    static Color indexedColors[];
    static GLushort indices[];
    GLfloat _rotation;
    GLfloat _CubeX;
    GLfloat _CubeY;
    GLfloat _CubeZ;

CUP файл cpp

    Vertex *Cube::indexedVertices = nullptr;
Color *Cube::indexedColors[] = nullptr;
GLushort  *Cube::indices[] = nullptr;

Ошибка появляется под индексированными индексами, индексированными цветами и индексами

  • 2
    Массивы не являются указателями и, следовательно, не могут быть инициализированы в nullptr .
  • 4
    Используйте std::array или std::vector и перестаньте беспокоиться о таких вещах.
Теги:
arrays
declaration

1 ответ

2
Лучший ответ

Массивы не могут быть пустыми.

Кроме того, вы не указали размер массивов в своих определениях.

Кроме того, ваши определения не соответствуют вашим заявкам! Для сравнения:

static Vertex indexedVertices[]; // declares an array of Vertexes
Vertex *Cube::indexedVertices = nullptr; // defines a pointer to a Vertex

Также сравните:

static Color indexedColors[]; // declares an array of Colors
Color *Cube::indexedColors[] = nullptr; // defines an array of pointers to Colors

Массивы не являются указателями. Иногда язык "поможет" преобразовать массивы в указатели для вас (например, indexedVertices преобразуются в &indexedVertices[0] при использовании в выражении), но это не одно и то же!

  • 0
    Спасибо вам за помощь. Как вы сказали, я подумал, что было странно устанавливать массив для нулевого указателя, но подумал, что я новичок в C ++, возможно, есть способ сделать это. Вот что меня попросили сделать: Есть несколько шагов, которые мы должны сделать, чтобы преобразовать наш куб в тот, который загружен из файла. Однако сначала мы можем избавиться от существующих данных, хранящихся в классе куба. В вашем файле cube.cpp измените массивы, реализованные в верхней части файла, чтобы они не содержали данных. Vertex * Cube :: indexedVertices = nullptr; Color * Cube :: indexedColors = nullptr; GLushort * Cube :: indices = nullptr;
  • 0
    @ user3331499 Обратите внимание, что это не массивы.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню