だから私はいくつかのコードに取り組んでいて、ちょっと困惑しています
クラス Node と別のクラス BinaryTree があります。
class Node
{
public:
Node();
Node(int thedata, Node* right, Node* left):data(thedata), right_pointer(right), left_pointer(left){};
int get_data(){return data;}
Node* get_right() {return right_pointer;}
Node* get_left() {return left_pointer;}
private:
int data;
Node* right_pointer;
Node* left_pointer;
};
class BinaryTree
{
private:
Node* root;
void add_tree_node(Node*& root,int data);
void print_tree(Node* root);
public:
BinaryTree();
void print_tree();
void add_tree_node(int data);
};
私の問題はこのコマンドにあります:
add_tree_node(root->get_right(), データ);
「オーバーロードされた関数のインスタンスがありません」というエラーが表示されます。get_right() はポインターへのポインターを返し、以下の 2 つのオプションの代わりにこれを行うためのより良い方法があるかどうか疑問に思っていました。
これを行うと: Node* right = root->get_right(); add_tree_node(右、データ);
また
add_tree_node(root->right_link,data);
それは機能し、値ではなくポインター自体を渡しているため、機能する理由を理解しています。