【发布时间】:2014-03-23 17:43:01
【问题描述】:
由于某种原因,getter 方法不起作用。它们是公开的,所以我不知道出了什么问题。
for (std::vector<Document>:: const_iterator it = v.begin(); it != v.end(); ++it)
{
cout << it->getName() << endl;
counter += it->getLength();
}
错误:将 'const Document' 作为 'void Document::getName()' 的 'this' 参数传递会丢弃限定符 [-fpermissive] cout getName()
错误:'operatorgetName()
错误:将 'const Document' 作为 'void Document::getLength()' 的 'this' 参数传递会丢弃限定符 [-fpermissive] 计数器 += it->getLength();
错误:“int”和“void”类型的无效操作数到二进制“operator+” 计数器 += it->getLength();
嗯,有没有办法让我们为最后一个问题做(int) (it->getLength())
我们可以为另一个做吗:
std::ostringstream value;
value << (*it).getName();
cout << getName << endl;
【问题讨论】:
-
他们不是
const,所以你不能用const_iterator给他们打电话。它与可访问性无关,与 const 正确性有关。而且您无法打印返回void的结果。 -
嗯,好的,但其他两个问题仍然存在。 +1 快速评论。
-
其中一个解决了两个错误,如果您想学究气,我也可以说您不能将返回
void的结果添加到其他内容中。我没有看到其他问题。 -
为什么它会返回 void 呢?啊,没关系,我很傻,哈哈