类型'..'的参数与'..'C ++不匹配

时间:2013-04-22 16:33:30

标签: c++ eclipse types arguments

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

不匹配

我的函数标题如下所示:

virtual string getAsText(Product* p) = 0;

它在其他模块中继承,但我调用它的函数只能看到这个标题。 该函数如下所示:

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 个答案:

答案 0 :(得分:4)

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

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

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

更改此

return rep->toString;

对此。

return rep->toString();

答案 1 :(得分:3)

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

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