Привет, меня попросили установить мои массивы, содержащие информацию 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;
Ошибка появляется под индексированными индексами, индексированными цветами и индексами
Массивы не могут быть пустыми.
Кроме того, вы не указали размер массивов в своих определениях.
Кроме того, ваши определения не соответствуют вашим заявкам! Для сравнения:
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]
при использовании в выражении), но это не одно и то же!
nullptr
.std::array
илиstd::vector
и перестаньте беспокоиться о таких вещах.