我收到此错误消息
错误:没有匹配的调用函数 HCTree :: build(std :: basic_ifstream< char,std :: char_trait< char>>&) 常量
注意:候选人是:HCNode * HCTree :: build(std :: ifstream&)<近 匹配>
in .cpp
int HCTree::decode(ifstream &in) const {
if(root == NULL) {
root = build(in); <-- error here
}
return aux_decode(in, root); <-- similarly error here too
}
在.hpp
HCNode* build(ifstream &in);
我不会放弃了解我做错了什么
答案 0 :(得分:0)
这看起来像一个常量问题。
只是猜测,但您的HCTree类是否继承自HCNode? p>
你试图从const函数调用非const成员函数,这是非法的。此外,假设root是HCTree或HCNode类的非可变成员变量,尝试在const解码函数中修改它也是非法的。尝试从HCTree :: decode中删除const限定符,因为它似乎根本不是const。
或者,如果root不是非可变成员变量,则可以将HCNode :: build声明为const,假设它实际上不会改变任何状态。