![](/img/trans.png)
[英]Use istream and ostream objects as data members of class c++
[英]c++ ostream return data from objects array
我的ostream具有以下源代碼
ostream& operator << (ostream& os, AnimalsDirectory& a) {
for(int i=0;i<a.directorySize;i++) {
return os << a.animals[i];
}
}
當我編譯此代碼時,它會產生以下錯誤:
ContactDir.cpp:64:1: warning: control may reach end of non-void
function
[-Wreturn-type]
}
^
我不知道為什么會發生此錯誤,我在對象動物數組上執行此操作,並希望'<<'打印有關此數組具有的所有信息。 提前致謝!
看一下如何聲明要實現的操作符方法。 您必須返回對ostream對象的引用,這是您在第一個參數中獲得的引用。
其次,您的循環中有一個return語句,它將在第一個循環周期中退出該函數。 你可能想做的是這樣的
ostream& operator << (ostream& os, AnimalsDirectory& a) {
for(int i=0;i<a.directorySize;i++) {
os << a.animals[i];
}
return os;
}
這要求每個動物對象還必須實現<<操作符
for(int i=0;i<a.directorySize;i++) {
return os << a.animals[i];
}
讓我們看看..如果a.directorySize == 0
?,那么對於i = 0
, i < a.directorySize
為false意味着循環永遠不會運行,這意味着將不會return
語句。 這將引發未定義的行為,因為循環后無任何返回值。 為此,編譯器發出警告。
此外,至少可以說您的代碼看起來很奇怪,您通常永遠不會循環到無條件返回。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.