にノードを挿入するためのものは私のクラスには、バイナリツリーのためのものです:演算子オーバーロード+ BinaryTree
class Node
{
friend class BinaryTree;
int value;
Node *left, *right;
};
class BinaryTree
{
private :
Node *first ;
public :
void insert_node(int x);
void delete_node(int x);
void in_order_traversal();
void print_leafs (Node *first);
void print_leafs2();
int get_height();
BinaryTree();
~BinaryTree();
// operator oveloading
};
私はので、私は、シーケンスがすべきツリーにつの新しい要素を挿入することができます+演算子をオーバーロードしたいですこのようなこと:
int x;
BinaryTree *bt;
x + bt; // or bt + x;
私はすでにツリーにノードを挿入する方法を持っている、と私はしなければならないすべては、オーバーロード演算子+コードでそのメソッドを呼び出すことです。これは私がそれを実行しようとしました方法です:
//inline declaration
friend BinaryTree& operator + (BinaryTree& bt, const int x)
{
bt.insert_node(x);
return bt;
}
私はなぜ知らないが、私はこのコードをデバッグするとき、ライン
bt + x;
は、コンパイラによって無視されます。
任意の助けが理解されるであろう:)
、それは非常に誤解を招く表記だから、それは動作しないことを喜んでいます。ほとんどのプログラマーは、 '+'が結果を生成することを期待しています。タイプミスとしてクローズする投票。 –
あなたが実際にx + btを呼び出すと、あなたのコードは一貫していません。ここでbtはポインタですが、これはもちろんポインタシフトです!さらに、私は、より一般的に物事を追加するために使用されるように<<演算子を使用する – choosyg
私はそれが木にノードを追加するために+演算子を使用することを知っているが、これは学校のためのプロジェクトであり、これはタスクでした: – Copacel