我有一個關於超載<<
運算符的問題。重載<<運算符不起作用
我有一個名爲House
類中,我已經定義如下(我沒有宣佈它作爲friend
,這是一個免費的「功能」,因爲我不打算訪問私有成員):
std::ostream& operator<<(std::ostream& stream, House const& house)
{
// Append strings to 'stream'
return stream
}
在另一類,我有這樣的:
std::vector<std::unique_ptr<House>> houses
現在,我想通過我的vector
迭代並顯示房屋,我有2個問題!
我的第一個問題:有沒有辦法使用foreach循環通過我vector
unique_ptr
的迭代,因爲它似乎並不認爲我可以這樣做:for (auto house : houses) { /* Do stuff */ }
第二個問題:如果我重複使用正常for
循環,我這樣做:
for (int i = 0; i < houses.size(); i++)
{
cout << *houses[i].get() << endl;
}
我收到一個錯誤,指出沒有運營商< <操作數匹配。你能告訴我我錯過了什麼嗎?
更新
謝謝大家對你的答案,使用auto&
迭代幫了不少忙,和我的其他問題的原因是,我是在定義我的House.cpp
文件我的重載運算符。由於我在爲House.h
執行#include
,因此無法看到重載的操作員。愚蠢的錯誤!
一個問題吧。 –
請發表[MCVE]而不是僞代碼,否則您的問題無法收到簡明的答案。 –
'(自動&房屋:房屋)' – 0x499602D2