类的运算符<<重载
operator << overloading for class
A
是我写的C 类:
class A
{
private:
int _num1;
int _num2;
public:
A(int num1, int num2)
{
_num1 = num1;
_num2 = num2;
}
~A(){}
int getNum1() { return _num1; };
std::ostream &operator<<(std::ostream &os, A const &obj) { return os << obj.getNum1(); };
};
有一个模板函数printArray
:
template <class T>
void printArray(T* arr, int size)
{
int i = 0;
for (i = 0; i < size; i++)
cout << arr[i] << endl;
}
当我在主函数中写入时:
A arr4[4] = { A(1,1), A(1,4), A(6,6), A(0,0) };
printArray(arr4, 4);
有这样的错误:
e0344对于此操作员函数的参数太多。
C2804二进制'运算符&lt;&lt;'参数太多。
c2333'a ::操作员&lt;&lt;':函数声明中的错误;跳过功能主体。
问题是什么以及如何解决?
当然我包括iostream
您有2个问题:1.您应该使用friend
关键字来超载<<
操作员2. getNum1
应该是const
class A
{
private:
int _num1;
int _num2;
public:
A(int num1, int num2)
{
_num1 = num1;
_num2 = num2;
}
~A() {}
int getNum1() const { return _num1; };
friend std::ostream &operator<<(std::ostream &os, A const &obj) { return os << obj.getNum1(); };
};
相关文章:
- C++重载<<具有typedef'd std::vector
- 重载运算符<<:此运算符函数的参数太多
- 在VS 2012上编译,但不使用Netbeans/MinGW-重载<<
- 重载运算符<<用于模板类.即使使用好友关键字也无法获得私人会员
- C++分离成员流重载<<
- 我已经完成了<<运算符重载,但它'It’不起作用
- 重载运算符<<输出地址而不是数据成员
- 重载运算符<<用于ostream语法
- 重载operator< & lt;作为会员打印
- Operator< & lt;重载隐藏其他
- 重载& lt; & lt;为什么我得到以下错误
- 重载ostream&时转换错误无效;operator< & lt;
- operator< & lt;在c++中为类中的类重载
- 重载& lt; & lt;用于打印自定义异常的操作符
- 重载<<运算符错误C2804:二进制'运算符<<'参数太多
- 上Ostream & lt; & lt;重载的困惑
- 重载& lt; & lt;为了我的班级
- 使用带有重载<<endl上的运算符
- 重载& lt; & lt;使用命名空间std
- operator< & lt;重载、名称空间和模板