请教一下构造函数的复制...
以下是我写的一个代码:
#include "stdafx.h"
class operate
{
int a,b;
public:
operate(int x,int y)
{a=x;b=y;}
void print()
{cout<<a<<'+'<<b<<'='<<a+b<<endl;}
operate(operate &a)
{
a=a.a; //A处
b=a.b;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
operate a1(1,2);
operate a2(a1);
operate a3(2,3);
a1.print();
a2.print();
a3.print();
return 0;
}
出现的错误:
(1)error C2679: 二进制“=”: 没有找到接受“int”类型的右操作数的运算符(或没有可接受的转换)(A处)
(2)可能是“operate &operate::operator =(const operate &)”
就是以上这两个错误....
我是根据书本的例子,然后自己再编另外一个不同的,但是就是不知道哪里错了,请指教.....
[解决办法]
operate(operate &aa)//原来的a和成员变量a重名了{a=aa.a; //A处b=aa.b;}
[解决办法]
原因是a这个名字被你到处乱用,编译器分不清到底各个a对应哪个变量。你为什么用同名的变量导致这么多混淆?
[解决办法]
#include <iostream>using namespace std;class operate{ int a,b;public: operate(int x,int y) { a=x;b=y; } void print() { cout<<a<<'+'<<b<<'='<<a+b<<endl; } operate(operate &A) { a=A.a; //A处 b=A.b; }};int main(){ operate a1(1,2); operate a2(a1); operate a3(2,3); a1.print(); a2.print(); a3.print(); return 0;}
[解决办法]