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 回答
这是该错误中的重要信息 .
您正在返回函数指针而不是函数调用的结果 .
改变这个
对此 .
getAsText
应该const
如果你是从const
函数调用它,虽然我没有看到你在任何地方使用它,我想你实际上(或者你的意思是toString
) .此外,您将返回
toString
函数上的指针而不是调用的结果 . 你需要在Controller::toString()
中添加一对括号 .