コンパイル時に上記のエラー メッセージが 2 回表示されます。他のすべては正常に動作します。つまり、他のコンパイル時エラーはありません。これは単純なバイナリ ツリー プログラムであり、エラーが発生している関数は、単にすべてのサブツリーを交換するためのスワップまたはミラー関数です。ここに関数があります
template <class dataType>
void swapSubTrees ( BinaryTree <dataType> * bt )
{
if(bt == NULL)
{
//do nothing
}
else
{
swapSubTrees(bt->left());
swapSubTrees(bt->right());
BinaryTree <int> *temp;
temp = bt->left();
bt->left() = bt->right();
bt->right() = temp;
}
}
これがメインの関数呼び出しです(これは、左辺値以外の2つのエラーが発生する場所です
swapSubTrees (b1);
b1 はクラス BinaryTree からインスタンス化されたオブジェクトで、ツリーの一番上にあります。ツリーの他のノードである対応するオブジェクト b2、b3、b4、および b5 があり、明らかに私が省略したコードからわかります。とにかく、どこが間違っていたのかを見つけることができないようです。何が原因でしょうか? どんな助けでも大歓迎です!左の関数は次のようになります
Template <class dataType>
BinaryTree <dataType> * BinaryTree<dataType> :: left()
{
return leftTree;
}