我已經實現了一個重載的Shift運算符,它需要輸出流作爲參數。在另一個類中,我正在處理這個函數,該函數返回重載運算符的輸出流。模板:不兼容列表迭代器
該類包含車輛列表,我想返回包含這些車輛名稱的流。
std::ostream& classname::outputprint(std::ostream& outputstream) const
{
typedef std::list <Vehicles*>::iterator itType;
itType it3;
outputstream << std::setw(9) << name;
for(cVehicles.begin() = it3; cVehicles.end() != it3 ; ++it3)
{
outputstream << std::setw(4) << (*it3)->getName();
}
return outputstream;
}
在頭文件,集裝箱聲明如下:
std::list<Vehicles*> cVehicles;
當我嘗試啓動該程序出現錯誤: 「表達式:列表迭代不兼容」
有人可以向我解釋爲什麼我得到這個錯誤,以及如何解決這個問題?
此外,我試圖改變for循環的:
for(it3 = cVehicles.begin(); cVehicles.end() != it3 ; ++it3)
{
...
}
這裏PROGRAMM根本不能編譯,我得到的錯誤: 「沒有‘=’操作這些操作數相匹配」。簡單的轉換如何對程序產生這樣的影響?
我會很感激任何形式的幫助,提前致謝!
更改爲'typedef std :: list :: const_iterator itType;' –
'class :: outputprint'應該是什麼意思?無論如何,'cVehcles'是您試圖展示其成員函數的類的數據成員嗎? – juanchopanza
cVehicles是列表容器。聲明在上面,其要素是車輛指針。 class :: outputprint返回輸出流,它將用於重載「<<」運算符。 – AlTrain