我想重载嵌套在类中的结构的流插入运算符。如何解决此错误并使功能正常运行,或者有其他替代方法可以实现该错误?
struct S {
int a;
int b;
};
class T {
private:
S** arrayName;
int r;
int c;
public:
friend ostream& operator << (ostream& _os, const T& _t) {
for (int i = 0; i < _t.r; i++) {
for (int j = 0; j < _t.c; j++) {
_os << _t.arrayName[i][j];
}
}
return _os;
}
}
答案 0 :(得分:0)
如果arrayName
只是class T
中的一个整数数组,例如:
int arrayName [4][4]; //for example
当前的实现将起作用。但是由于arrayName
是指向struct S
的指针,并且充当struct S
的二维数组,因此您需要在{{1}中重载<<
运算符},以便能够打印其成员struct S
和a
。
所以您的b
现在应该是:
struct S