传递ifstream未被识别

时间:2013-11-07 09:46:22

标签: c++ ifstream

我收到此错误消息

  

错误:没有匹配的调用函数   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);

我不会放弃了解我做错了什么

1 个答案:

答案 0 :(得分:0)

这看起来像一个常量问题。

只是猜测,但您的HCTree类是否继承自HCNode?

你试图从const函数调用非const成员函数,这是非法的。此外,假设root是HCTree或HCNode类的非可变成员变量,尝试在const解码函数中修改它也是非法的。尝试从HCTree :: decode中删除const限定符,因为它似乎根本不是const。

或者,如果root不是非可变成员变量,则可以将HCNode :: build声明为const,假设它实际上不会改变任何状态。