c++运算符重载问题。类的运算符已重载,为什么对于类对象 mycomplex1,进行mycomplex1++操作时出现错误,而mycomplex1.operator ++()时没有错误

shitou12 发布于 2016/04/12 16:24
阅读 293
收藏 0


win7,vs2015,vc++。

在类中对++和--进行了重载,在用时出现错误,“错误 C2676 二进制“++”:“complex”不定义该运算符或到预定义运算符可接收的类型的转换” 。具体情况见以下程序中的main函数。

#include<iostream>
using namespace std;

//类complex定义
class complex
{
public:
     friend ostream &operator <<(ostream &out, complex &mycomplex);//<<和>>重载声明
     friend istream &operator >>(istream &in, complex &mycomplex);

public:
     int x;
     int y;
//构造函数
 complex():x(0),y(0)
{
cout << "构造" << endl;
}
complex(int a, int b) :x(a), y(b)
{
cout << "构造" << endl;
}

//析构函数
~complex()
{
cout << "析构" << endl;

//++和--运算符重载声明
void operator ++();
void operator --();
};

//++和--重载定义
void complex::operator ++()
{
this->x++;
this->y++;
}
void complex::operator --()
{
this->x--;
this->y--;
}

//>>和<<重载定义
istream &operator >>(istream &in, complex &mycomplex)
{
cout << "请输入x,y" << endl;
in >> mycomplex.x >> mycomplex.y;
return in;
}
ostream &operator <<(ostream &out, complex &mycomplex)
{
out << mycomplex.x << "+" << mycomplex.y << "i" << endl;
return out;
}


void main()

{

/*complex mycomplex(1, 2);
cout << mycomplex << endl;*/
    complex mycomplex1;
    cin >> mycomplex1;
    mycomplex1++;//这样用出现错误 C2676
 //mycomplex1.operator ++();//这样没错误出现,为什么
    cout << mycomplex1 << endl;
    cin.get();
    cin.get();
}

为什么红字那样用会出现错误?

加载中
0
Force武装卫队
s
shitou12
谢谢,我明白了,这是前置重载
返回顶部
顶部