【发布时间】:2017-12-26 15:14:31
【问题描述】:
我的 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]
}
^
我不知道为什么会发生这个错误,我在对象动物数组上执行此操作,并希望 '
【问题讨论】:
-
c.directorySize?我在您的operator <<中看不到任何c对象此外,第一个return语句将终止您的循环,您将仅返回a.animals[0] -
@Fureeish 我在上面修好了,有一个
-
那么如何循环所有对象并返回有关它的数据?
-
return os << a.animals[i];在循环的第一次迭代中,这将从函数返回。不幸的是,如果directorySize为 0,这将永远不会执行,并且循环结束,但该函数不会显式返回任何内容。这就是您的编译器所抱怨的。这个return语句显然是错误的,你的意思是打印数组中的每个元素,而不返回,并在末尾有一个return语句。 -
你“不知道”到底是什么?除了最初编写此代码所需的知识之外,这里没有任何其他知识需要任何其他知识。