Witam!
Mam jedno pytanie, czy jezeli inicjalizuje tablice obiektow w ten sposób:
#include <iostream>
using namespace std;
class abc
{
int x, y;
public:
abc(int c)
{
x=c;
y=10;
}
abc()
{
x=120;
y=120;
}
void pokaz()
{
cout << x << " "<< y <<endl;
}
};
int main()
{
abc ob1;
abc ob2 = ob1;
abc ob3(10);
abc tablica[5]= //TUTAJ DOKONUJE INICJALIZACJI
{
abc(29),
abc(34),
abc(23),
abc(),
};
for(int i=0; i<5;i++)
{
tablica[i].pokaz();
cout << endl;
}
return 0;
}
w klasie moge mieć zdefiniowane własny konstruktor kopiujący, bo powyższy kod działa jak należy, ale poniższy wywala bład:
error: no matching function for call to 'abc::abc(abc)'.
#include <iostream>
using namespace std;
class abc
{
int x, y;
public:
abc( abc & obiekt_do_kopiowania)
{
this->x = obiekt_do_kopiowania.x;
this->y = obiekt_do_kopiowania.y;
cout << "O to ja Kopujacy ----" <<endl;
cout << x <<" " << y <<endl;
}
abc(int c)
{
x=c;
y=10;
}
abc()
{
x=120;
y=120;
}
void pokaz()
{
cout << x << " "<< y <<endl;
}
};
int main()
{
abc ob1;
abc ob2 = ob1;
abc ob3(10);
abc tablica[5]=
{
abc(29),
abc(34),
abc(23),
abc(),
};
for(int i=0; i<5;i++)
{
tablica[i].pokaz();
cout << endl;
}
return 0;
}