0

C ++で(リンクされたノード表現を使用して)二分木を書いています。ツリー内のノード数をカウントするメンバー関数を作成したいので、このジョブを実行する再帰関数を作成します。

template<class Item> size_t binary_tree<Item>::count_node(
                                binary_tree_node<Item>* const node)
{
    if(node == NULL) return 0;
    else return 1 + count_node(node->get_left())
                  + count_node(node->get_right());
}

この関数は、binary_tree クラスの private に設定します。私はそれを呼び出すパブリック関数 size() を持っています:

template<class Item> size_t binary_tree<Item>::size()
{
    return count_node(root);
}

ここで私の質問があります: コードのように size() を書くと、問題なく動作します。しかし、次のように戻り値を const に設定すると:

template<class Item> size_t binary_tree<Item>::size() const
{
    return count_node(root);
}

このコードはコンパイルできません。コンパイラは、size_t を const size_t に転送できないと文句を言います。この問題を解決するにはどうすればよいですか? ありがとう。

4

1 に答える 1