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

Я хочу реализовать простую структуру дерева в 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

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

2 ответа

Решение

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

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

node* children[maxChildren];

Иначе:

std::vector<node*> children;

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

node* leftChild;
node* rightChild;
Другие вопросы по тегам