0
我想爲ostream運算符使用非成員函數重載的標準格式,但是當我有一個向量的內部賦值時它不會與const第二個參數一起使用迭代器。當使用const參數時,編譯器會給出以下錯誤:error:在j = bus.owAPI :: owBus :: owCompList.std :: vector中不匹配'operator ='...使用const參數錯誤的C++ ostream運算符重載
我的相關部分是類如下:
class owBus{
public:
std::vector<owComponent> owCompList; //unsorted complete list
friend std::ostream&
operator<<(std::ostream& os, const owBus& bus);
};
與非成員函數:
std::ostream& operator<<(std::ostream& os, const owBus& bus) {
//iterate through component vector
std::vector<owComponent>::iterator j;
for(j=bus.owCompList.begin(); j!=bus.owCompList.end(); j++) {
/*
os << (*j).getComponentID() << ": ";
os << (*j).getComponentType() << std::endl;
*/
}
return os;
}
如果常量從朋友聲明和在函數描述的第二個參數除去這工作得很好,否則給上述錯誤。我沒有爲班級定義一個賦值運算符,但我不清楚爲什麼應該有所作爲。
謝謝,我會努力讓迭代器常量,但我沒有做正確。 RTFM恐怕... – ppanish