массивы — Использование самой структуры в определении структуры в Stack Overflow

Я хочу реализовать простую структуру дерева в C ++, например:

struct node{
....
node* parent;
node[]* children;
....
};

но компилятор сообщил об ошибке (и CLang ++, и G ++)

error: expected unqualified-id before '[' token
node[]* child;
^

error: expected ',' or '...' before '*' token
node(node[]* c): : child = c; {}
^

что-то вроде этого

Кстати, я использую флаг -std = c ++ 11 для некоторых функций C ++ 11

любая помощь ценится

-1

Решение

Размер структуры является постоянной времени компиляции. Если вы дадите массив size to be determined laterЭто ошибка. Либо дайте некоторый размер (например, в случае двоичного дерева), либо используйте pointer to node * хранить массив или указатель (дочерние элементы) или использовать какой-либо встроенный контейнер (например, std :: vector, std :: array)

2

Другие решения

node[]* children; не является допустимым синтаксисом C ++. Если максимум
количество детей известно во время компиляции, вы можете написать:

node* children[maxChildren];

Иначе:

std::vector<node*> children;

сделает свое дело. Если maxChildren большой или переменный, вы
возможно, захотите использовать эту форму в любом случае. С другой стороны, если
maxChildren 2, вы можете просто объявить два указателя:

node* leftChild;
node* rightChild;
0

По вопросам рекламы [email protected]