Binary Search Tree クラスに取り組んでいますが、オーバーロードされたストリーミング演算子関数のコーディングに問題があります。これが私のコードです...オンラインで(および教授のパワーポイントで)見つけることができたすべてのことを行ったので、何が間違っているのかわかりません。
*数秒前に編集して、コードの変更を更新しました。フレンド関数にあったものと同様のコードを持つフレンドに送信されるオブジェクトから関数を呼び出すことにしました...
ヘッダー ファイル (.h ファイル) の関連ヘッダー:
friend ostream& operator<<(ostream& out, const BST& tree);
void leveltraversal(ostream& out);
関連する「プライベート」データ/ヘッダー ファイル (.h ファイル) のネストされたクラス:
private:
class BinNode {
public:
T data;
BinNode* left;
BinNode* right;
BinNode() : left(NULL), right(NULL) {}
BinNode (T item): data(item), left(NULL), right(NULL) {}
};
typedef BinNode* BinNodePtr;
BinNodePtr myRoot;
関連する実装ファイル関数:
ostream& operator<<(ostream& out, const BST& tree)
{
tree.leveltraversal(out);
return out;
}
template <typename T>
void BST<T>::leveltraversal(ostream& out)
{
int level = 0;
BinNodePtr temp = myRoot;
queue<BinNodePtr> nodes;
nodes.push(temp);
out << endl << endl;
while (!nodes.empty()){
temp = nodes.front();
level = recursive_level(temp->data);
out << endl << endl;
out << "Node data: " << temp->data;
out << endl;
out << "Level: " << level;
nodes.pop();
if (temp->left)
nodes.push(temp->left);
if (temp->right)
nodes.push(temp->right);
}
}
コンパイル エラーを投稿したいと思いますが、エラーはかなりの数の行にわたって続き、問題は自明だと思います。ただし、必要に応じて更新します。