forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   перегрузка (http://forum.boolean.name/showthread.php?t=463)

Hamaus 25.12.2005 01:42

не могу перегрузить присвоение (=).
Гляньте, кому не сложно, может ошибку найдете. :'((
Класс описывает множество чисел(храняться в булевском массиве).

Код:

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;
}


Hamaus 25.12.2005 01:54

я кажись в конструкторе копирования намухлил.

alex-mad 25.12.2005 03:21

плиз! помогите Hamaus'y! а то жопа будет :(
я на вкидку не вижу erroroв :(

Hamaus 25.12.2005 13:36

Цитата:

Originally posted by alex-mad@Dec 25 2005, 02:21 AM
плиз! помогите Hamaus'y! а то жопа будет :(
я на вкидку не вижу erroroв :(

Я ошибку нашел. Спс.


Часовой пояс GMT +4, время: 03:50.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot