我正在用 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 类的私有中设置了这个函数。我有一个公共函数 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。如何解决这个问题?谢谢。