2

eclipse 中的 C++ 给出以下错误,我不知道为什么:..\BakeryC++\src\controller\controller.cpp:227:20: error: argument of type 'std::string (Repository::)() const {aka 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;
}

将不胜感激任何帮助。

4

2 回答 2

4

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

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

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

改变这个

return rep->toString;

对此。

return rep->toString();
于 2013-04-22T16:35:36.903 回答
3

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

此外,您返回的是toString函数指针,而不是调用的结果。您需要在Controller::toString().

于 2013-04-22T16:34:51.050 回答