Ошибка Компиляции E2285.

  • Автор темы DPT
  • Дата начала
D
#1
Код программы для решения логических операций. Писал ее на VS 2010(работает) и копи\паст в Builder 6, начинаю компилировать и тут ошибка E2285 Could not find a match for 'oper::eek:perator =(oper)' понятия не имею что не так.
Как мне кажется ошибка говорить что справа перед "=" должен быть один объект oper но сперва должно выполниться то что справа а потом начать присваивать.
Что посоветуете?

C++:
#include<iostream>
using namespace std;

class oper
{
public:
oper(){};
oper(int a);
oper(int a1,int a2,int a3,int a4,int s5,int a6);
~oper(){};
oper operator+(oper &rhs);
oper inv(oper&);
oper operator*(oper &rhs);
oper operator=(oper &rhs);
friend ostream &operator<<(ostream &stream,oper &rhs);
void setItsN(int a1,int a2,int a3,int a4,int a5,int a6);
void setItsN(int mas[6],oper);
void vd(oper &);
void vvod(oper&);

int itsN[6];
};

oper::oper(int a)
{
if (a==0)
for (int i=0;i<6;i++)
itsN[i]=0;
else 
for (int i=0;i<6;i++)
itsN[i]=1;
};

oper::oper(int a1,int a2,int a3,int a4,int a5,int a6)
{
itsN[0]=a1;
itsN[1]=a2;
itsN[2]=a3;
itsN[3]=a4;
itsN[4]=a5;
itsN[5]=a6;
};

void oper::setItsN(int mas[6],oper rhs)
{
for(int i=0;i<6;i++)
rhs.itsN[i]=mas[i];
};

oper oper::operator+(oper &rhs)
{
oper te(0);
for(int i=0;i<6;i++)
{
if((itsN[i]==1)||(rhs.itsN[i]==1))
te.itsN[i]=1;
else
te.itsN[i]=0;
}
return te;
};

ostream &operator<<(ostream &THS,oper &rhs)
{
for(int i=0;i<6;i++)
THS<<rhs.itsN[i];
return THS;
};


oper oper::operator=(oper & rhs)
{
for(int i=0;i<6;i++)
itsN[i]=rhs.itsN[i];
return *this;
};

oper oper::operator*(oper & rhs)
{
oper te(0);
for(int i=0;i<6;i++)
{
if((itsN[i]==1)&&(rhs.itsN[i]==1))
te.itsN[i]=1;
else
te.itsN[i]=0;
}
return te;
};

oper oper::inv(oper &rhs)
{
oper te;
for(int i=0;i<6;i++)
if (itsN[i]==0)
te.itsN[i]=1;
else te.itsN[i]=0;
return te;
};

void oper::vvod(oper &rhs)
{
for(int i=0;i<6;i++)
{
cout<<"x"<<i<<"=";
cin>>rhs.itsN[i];
}
};

int main()
{
oper x1(0),x2(0),x3(0),x4(0),y(0);
cout<<"x1"<<endl;
x1.vvod(x1);
cout<<"x2"<<endl;
x1.vvod(x2);
cout<<"x3"<<endl;
x1.vvod(x3);
cout<<"x4"<<endl;
x1.vvod(x4);
y=(x1.inv(x1)+x2*(x3.inv(x3)+x4));
cout<<y;
system("pause");
return 0;
}
 
A

AlixBZ

#4
простите, а я не понял. "=" вроде бы перегружен?
и, кстати, в CBuilder 2010 ругается:
"[BCC32 Error] File1.cpp(23): E2093 'operator*' not implemented in type 'oper' for arguments of the same type"