Использование самой структуры в определении структуры в 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;