Доброго времени суток, столкнулся с проблемой передачи узлов дерева в функции. Задача проста, мне надо передавать узлы в функцию, а сама функция будет работать с этим узлом дальше. Но возникает ошибка при компиляции:
196|error: request for member ‘next’ in ‘* root’, which is of pointer type ‘Node*’ (maybe you meant to use ‘->’ ?)|// Код узла дерева
class Node
{
public:
Token * value; // Данные
vector<Node *> next; // Список указателй на другие узлы
// Деструктор
~Node()
{
delete value;
int it = 0;
for(; it < next.size(); it++)
if(next[it] != nullptr)
delete next[it];
}
Node()
{
value = new Token();
}
void reverse(vector<Token *> &res)
{
int it = 0;
for(; it < next.size(); it++)
if(next[it] != NULL)
next[it]->reverse(res);
res.push_back(value);
}
void Log()
{
cout << value->value << " ";
int it = 0;
for(; it < next.size(); it++)
if(next[it] != NULL)
next[it]->Log();
}
}
// Передача узла и вызов
bool Syntax::On_BG(Node ** root)
{
if(++it >= lexList.size()) return false;
if(lexList[it]->type != BEGIN) return false;
Node * node;
if(!On_BF(&node)) return false;
*root->next.push_back(node);
if(++it >= lexList.size()) return false;
if(lexList[it]->type != END) return false;
return true;
}
Немножко пояснения:
On_BF(&node) функция, если все удачно проходит присваивает адрес сгенерированного узла указателю, потом я питаюсь этот адрес запихать в родительский узел, но возникает ошибка.