0

我收到此错误消息

错误:没有匹配函数调用 HCTree::build(std::basic_ifstream < char, std::char_trait< char>> &) const

注意:候选者是:HCNode* HCTree::build(std::ifstream&) <近似匹配>

在.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);

我不退出明白我做错了什么

4

1 回答 1

0

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

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

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

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

于 2013-11-07T10:00:17.407 回答