ошибка при использовании typedef

270
20 октября 2017, 14:45

В данном коде компилятор выдает следующую ошибку:

error: expected unqualified-id before ‘[’ token typedef int[CUBE_DIMENSION][CUBE_DIMENSION] Side;

error: ‘Side’ does not name a type typedef Side[NUM_SIDES] Cube;

error: expected unqualified-id before ‘[’ token typedef int[CUBE_DIMENSION] Row, Column;

Может кто-нибудь подсказать, что означает unqualified-id или чем вызвана данная ошибка?

...  
#define CUBE_DIMENSION 3
#define NUM_SIDES 6   
typedef int[CUBE_DIMENSION][CUBE_DIMENSION] Side;
typedef Side[NUM_SIDES] Cube;
typedef int[CUBE_DIMENSION] Row, Column;
...
Answer 1

Вот здесь https://stackoverflow.com/questions/4523497/typedef-fixed-length-array люди подсказывают, что массивы нужно определять наизнанку

typedef int Side[CUBE_DIMENSION][CUBE_DIMENSION];
Answer 2

typedef, грубо говоря, работает как объявление переменной - только вместо переменной - тип.

Например, как выглядит объявление двумерного массива 10x10?

int array[10][10];

Значит, для определения типа двумерного массива 10x10 надо дописать typedef:

typedef int array[10][10];

Другое дело в C++ using - тут и в самом деле немного не так:

using array = int[10][10];
READ ALSO
Обновить XML-файл средствами QDomElement

Обновить XML-файл средствами QDomElement

Есть XML-файл со следующей структурой:

277
Код, по-разному работающий в C++03 и C++11/14

Код, по-разному работающий в C++03 и C++11/14

Понятно, что изменение смысла auto от одного стандарта к другому приводит к возможности ошибки, или, наоборот, ошибочный из-за >> в шаблоне...

326
Отображение файлов на память

Отображение файлов на память

Дано два файла, нужно переписать содержимое одного в другойПри этом надо переписывать по 1024 байта

400
Перегрузка опертора [] c++ для создания двумерного массива

Перегрузка опертора [] c++ для создания двумерного массива

Есть класс, который хранит в себе двумерный массив QVector(Аналог std::vector в Qt)

269