你好我们在Yosemite OS上使用Xcode,当我尝试使用这些操作符时我得到错误控制到达无效功能的结束,有人可以告诉我如何修复它吗?
`A& A::operator= (A& src)`
{
delete[] b_;
i_ = src.i_;
b_ = new B[i_];
for(int i = 0; i < i_; i++)
b_[i].set(src.b_[i].get());
} `//Here appear this error>> Control reaches end of non-void function`
std::ostream& operator<< (std::ostream& str, const A& a)
{
str << a.i_ << ":";
for(int i = 0; i < a.i_; ++i)
str << " " << a.b_[i].get();``
return str << std::endl;
}
std::istream& operator>> (std::istream& str, A &a)
{
int i;
str >> i;
A* b = new A(i);
a = *b;
} //Here appear this error>> Control reaches end of non-void function
答案 0 :(得分:1)
您没有从声明为返回值的函数返回任何内容。例如:
A& A::operator= (A& src)`
{
delete[] b_;
i_ = src.i_;
b_ = new B[i_];
for(int i = 0; i < i_; i++)
b_[i].set(src.b_[i].get());
return *this; // <-- return something
}
std::istream& operator>> (std::istream& str, A &a)
{
int i;
str >> i;
A* b = new A(i);
a = *b;
return str; // <-- return something
}
你得到的具体错误 - “控制到达非空函数的结尾”只是意味着编译器遇到函数体的末尾而没有一个语句返回一个函数的值,该函数的签名表明它应该返回某事(错误信息的“非空白”部分)。