簡體   English   中英

c ++ ostream從對象數組返回數據

[英]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 = 0i < a.directorySize為false意味着循環永遠不會運行,這意味着將不會return語句。 這將引發未定義的行為,因為循環后無任何返回值。 為此,編譯器發出警告。

此外,至少可以說您的代碼看起來很奇怪,您通常永遠不會循環到無條件返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM