繁体   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