的C2440錯誤(不能從「字符」到「Text_iterator」轉換該線路發生):範圍-for循環識別錯誤的類型(C2440)
void print(Document& d)
{
for (Text_iterator p : d) cout << *p;
}
更換「Text_iterator」與「汽車」給出'非法間接'錯誤(解除引用的類型必須是一個指針)。
類文檔定義了begin()和end()函數(返回Text_iterator),而Text_iterator具有通常的迭代器運算符。下面是代碼:
class Text_iterator
{
list<Line>::iterator ln;
Line::iterator pos;
public:
// . . .
char& operator*() { return *pos; }
Text_iterator& operator++();
// . . .
};
和文檔:
struct Document
{
list<Line> line;
Text_iterator begin()
{
// . . .
}
Text_iterator end()
{
// . . .
}
// . . .
};
或(更好恕我直言)'的(常量自動&P:d)COUT <
@JesperJuhl好點。已添加到答案 – NathanOliver