Return 派生类型 ostream class
Return type ostream for derived class
通过继承,我正在尝试在我的基础 class 中创建一个重载输出运算符,它在正确的派生 class 中调用输出函数以根据哪种类型打印正确的数据对象。
如何 return 可以发送到重载输出运算符的输出,以便您可以仅使用 cout << object << endl;
输出对象
例如:
ostream & operator<< (ostream &out, const person &rhs){
out << rhs.print_data();
return out;
}
ostream student::print_data(){
ostream out;
out << data;
return out;
}
ostream faculty::print_data(){
ostream out;
out << data;
return out;
}
编辑:我想弄清楚是否需要 return 在打印函数中输入 ostream
或 ostream &
流不能复制,所以如果你想return(或作为参数传递)必须通过引用来完成。而且你不能 return 对局部变量的引用(因为它们会超出范围并且 "disappear")。
此外,基本的 std::ostream
对象创建实例没有意义。
简单的解决方案:将流作为参数(当然是通过引用)传递给函数:
ostream& operator<< (ostream &out, const person &rhs){
return rhs.print_data(out); // No need for any output here
}
ostream& student::print_data(ostream& out){
return out << data;
}
通过继承,我正在尝试在我的基础 class 中创建一个重载输出运算符,它在正确的派生 class 中调用输出函数以根据哪种类型打印正确的数据对象。
如何 return 可以发送到重载输出运算符的输出,以便您可以仅使用 cout << object << endl;
例如:
ostream & operator<< (ostream &out, const person &rhs){
out << rhs.print_data();
return out;
}
ostream student::print_data(){
ostream out;
out << data;
return out;
}
ostream faculty::print_data(){
ostream out;
out << data;
return out;
}
编辑:我想弄清楚是否需要 return 在打印函数中输入 ostream
或 ostream &
流不能复制,所以如果你想return(或作为参数传递)必须通过引用来完成。而且你不能 return 对局部变量的引用(因为它们会超出范围并且 "disappear")。
此外,基本的 std::ostream
对象创建实例没有意义。
简单的解决方案:将流作为参数(当然是通过引用)传递给函数:
ostream& operator<< (ostream &out, const person &rhs){
return rhs.print_data(out); // No need for any output here
}
ostream& student::print_data(ostream& out){
return out << data;
}