Я хочу реализовать простую структуру дерева в 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
любая помощь ценится
Размер структуры является постоянной времени компиляции. Если вы дадите массив 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;