首页 文章

类型'..'的参数不匹配'..' C [关闭]

提问于
浏览
2

eclipse中的C给出了以下错误,我无法找出原因:.. \ BakeryC \ src \ controller \ controller.cpp:227:20:error:类型为'std :: string(Repository ::)()的参数const {aka std :: basic_string(Repository ::)()const}'与'std :: string '不匹配

我的函数头看起来像这样:

virtual string getAsText(Product* p) = 0;

它在其他模块中继承,但我称之为的功能只能看到这个 Headers . 该功能如下:

string Controller::toString() const{
    return rep->toString;
}

只是为了确定,这是原始的toString()函数:

string IMRepository::toString() const
{
    string str = "";
    for (int i = 0; i < this->getSize(); i++)
    {
        Product* p = this->ProductList.get(i);
        if (p == NULL)
            continue;

        string name(p->getName());
        string supplier(p->getSupplier());
        char quantity[3];
        sprintf(quantity, "%d", p->getQuantity());
        string sq(quantity);
        str+=name+", "+supplier+", "+sq+"\n";
    }
    return str;
}

非常感谢任何帮助 .

2 回答

  • 4

    这是该错误中的重要信息 .

    std::basic_string (Repository::)() const does not match std::string
    

    您正在返回函数指针而不是函数调用的结果 .

    改变这个

    return rep->toString;
    

    对此 .

    return rep->toString();
    
  • 3

    getAsText 应该 const 如果你是从 const 函数调用它,虽然我没有看到你在任何地方使用它,我想你实际上(或者你的意思是 toString ) .

    此外,您将返回 toString 函数上的指针而不是调用的结果 . 你需要在 Controller::toString() 中添加一对括号 .

相关问题