这个问题在这里已有答案:
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二进制'operator <<'有太多参数。
C2333'A :: operator <<':函数声明中的错误;跳过功能体。
有什么问题以及如何解决?
当然我包括了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(); };
};