Я только что написал функцию inorder для моего двоичного дерева и столкнулся с этой трудностью.
class BinaryTree
{
private:
struct Node* o_root;
public:
BinaryTree()
{
o_root = new Node();
o_root->data = 0;
o_root->left = NULL;
o_root->right = NULL;
}
void inorder(Node*root = o_root);//Invalid
};
void BinaryTree::inorder(Node* root = o_root)//Invalid
{
if(root==NULL)
{
return;
}
inorder(root->left);
cout<< root -> data;
inorder(root->right);
}
Я получаю сообщение об ошибке: ссылка на нестатический член должна относиться к определенному объекту
, если я поверну корневой узел статическим, это работает.
Почему это должнобыть таким?Если у меня есть два двоичных дерева, я бы хотел конкретный корень объекта, а не статический член.Я попытался использовать этот оператор, но это дает мне еще одну ошибку, которая в основном говорит, что использование этого оператора не разрешено в параметре по умолчанию.
Может кто-нибудь объяснить, почему это не работает и почему C ++ отказал в использовании этого оператора в качестве аргументов по умолчанию?