重载嵌套结构/类的流插入运算符
Overload the stream insertion operator for nested structures/classes
我想重载嵌套在类中的结构的流插入运算符。如何修复此错误并使函数正常工作,或者是否有任何替代方法来实现它?
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;
}
}
如果arrayName
只是class T
中的整数数组,如下所示:
int arrayName [4][4]; //for example
当前的实现将起作用。但是由于arrayName
是一个指向struct S
的指针,并且充当struct S
的二维数组,因此您需要在struct S
内重载<<
运算符才能a
和b
打印其成员。
所以你的struct S
现在应该是:
struct S {
int a;
int b;
friend ostream& operator<<(ostream& _os, const S& _s) {
_os << _s.a << ' ' << _s.b << endl;
return _os;
}
};
相关文章:
- 重载嵌套结构/类的流插入运算符
- 屏幕插入运算符<<的运算符过载问题
- 类方法的C++插入运算符
- 在设计方面:重载vector类型的类成员的插入运算符
- 我在C++中遇到插入运算符错误
- 基类和派生类的虚拟插入运算符重载
- 如何在 std::map<const int、int> C++ 中重载插入运算符>>?
- 插入运算符的过载与使用二传手功能相比
- Visual Studio 15:重载"<<" C++中的插入运算符
- 使用 std::stringbuf 进行缓冲的效果,同时通过插入运算符'<<'执行写入
- 为什么当我使用额外的括号而不使用运算符重载时,插入运算符在 std::cout 中给出不同的结果?
- 编译器在遇到提取或插入运算符时处理信息(字符串、操纵器等)的顺序是什么?
- 插入运算符无法使用矢量,我不知道为什么
- 在C++中,我们如何将插入运算符和其他运算符链接在一起
- 插入运算符的非成员函数窗体
- C++序列化:使用write()重载插入运算符
- 子类中的重载流插入运算符 (<<)
- 重载提取和插入运算符 C++
- 流插入 (<<) 运算符过载?
- ostream 插入运算符与其非成员重载之间的关系