не могу перегрузить присвоение (=).
Гляньте, кому не сложно, может ошибку найдете. :'((
Класс описывает множество чисел(храняться в булевском массиве).
class mnojestvo{
private:
int n;
int j;
bool *mas;
public:
mnojestvo(int raz);
mnojestvo(mnojestvo &mn);
mnojestvo operator=(mnojestvo mn);
bool find(int i);
~mnojestvo();
mnojestvo operator+(int i);
void print() const;
};
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int kvo1=0;
int t=0;
cout<<"mn1 k-vo?"; cin>>kvo1;
mnojestvo mn1(kvo1);
mnojestvo mn3(10);
cout<<endl<<"mn1 ";
for (int i=0; i<kvo1;i++){
cout<<"["<<i<<"]=";cin>>t;
mn1+t;
}
mn1.print();
mn3=mn1;
mn3.print();
getch();
return 0;
}
mnojestvo::mnojestvo(int raz){
cout<<endl<<"konstr"<<endl;
if(raz<0) exit(0);
n=raz;
mas=new bool[n];
j=0;
for(int z=0;z<n;z++) mas[z]=false;
}
mnojestvo::mnojestvo(mnojestvo &mn){
cout<<endl<<"konst kop"<<endl;
n = mn.n;
mas = new bool [n];
j = mn.j;
for(int i=0;i<j;i++){
mas[i]=mn.mas[i];
}
}
mnojestvo::~mnojestvo(){
cout<<endl<<"distr"<<endl;
delete []mas;
}
void mnojestvo::print() const {
cout<<"{";
int x=0;
while(x<n&&!find(x)) x++;
if(find(x)) cout<<x;
//for(int i=0;i<n;i++) cout<<mas[i]<<" ";
for(int y=x+1;y<n;y++) if(find(y)) cout<<", "<<y;
cout<<"}";
}
mnojestvo mnojestvo::operator+(int i){
if(i<n){
mas[i]=true;
j++;
}
return *this;
}
mnojestvo mnojestvo::operator =(mnojestvo list){
if(&list==this){
cout<<"samoprisv"<<endl;
return *this;
}
if(n<list.n){
cout<<"mesta malo"<<endl;
bool *b=new bool [list.n];
for(int u=0;u<list.n;u++)
b[u]=mas[u];
delete []mas;
n=list.n;
mas=new bool[n];
// for(int r=0;r<n;r++)
// mas[r]=b[r];
}
// n=list.n;
for(int i=0;i<n;i++)
mas[i]=list.mas[i];
return *this;
}
bool mnojestvo::find(int i){
if(i<n){
return mas[i];
}
return false;
}