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;
}
感谢任何帮助。
答案 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()
中添加一对大括号。