動的に作成されたオブジェクトの配列を持つクラスを作成しようとしています。演算子 + をオーバーロードして、新しいオブジェクトをオブジェクトのグループ (クラスからクラスへ) に追加しました (今のところこれだけです)。問題は、配列内のデータを読み取るときに、あらゆる種類の大きな数値が得られることです。コードは次のとおりです。
#include<iostream.h>
class Figura {
public:
int x, y, poz;
int tip; //1 = punct ; 2 = dreapta; 3 = dreptunghi
Figura() { };
Figura(const Figura&) { };
};
class Grup {
private:
int nr_elemente;
Figura *figuri;
public:
int i;
Grup(int nr_el) {
nr_elemente = nr_el;
figuri = new Figura[nr_elemente];
i = 1;
}
~Grup() {};
Grup(const Grup&) {};
int _nr_elemente() {
return i;
}
void adauga_element(Figura fig) {
if( i <= nr_elemente)
figuri[i++] = fig;
else
cout<<"Grupul a atins numarul maxim de figuri.";
}
void afiseaza_elemente() {
for(int j = 1; j <= i; j++)
cout<<"Figura nr : "<<j<<"tip: "<<figuri[j].tip<<figuri[j].x<<" "<<figuri[j].y<<" "<<figuri[j].poz;
}
friend Grup operator+(const Figura& fig1, const Figura& fig2) {
return fig1.poz + fig2.poz;
};
friend Grup operator+(const Grup& gr1, const Grup& gr2) {};
void operator+(const Figura& fig);
friend Grup operator*(const Grup& fig) {};
};
void Grup::operator+(const Figura& fig) {
Grup::adauga_element(fig);
}
class Punct : public Figura
{
public:
Punct(int poz) {
Punct::tip = 1;
Punct::poz = poz;
}
};
class Segment : public Figura
{
public:
Segment(int poz, int x) {
Segment::tip = 2;
Segment::poz = poz;
Segment::x = x;
}
};
class Dreptunghi : public Figura
{
public:
Dreptunghi(int poz, int x, int y) {
Dreptunghi::tip = 3;
Dreptunghi::poz = poz;
Dreptunghi::x = x;
Dreptunghi::y = y;
}
};
void main(void) {
Grup gr(1);
Punct pct(1);
Segment sgm(3, 5);
gr + pct;
gr + sgm;
//cout<<gr.i;
cout<<sgm.x;
gr.afiseaza_elemente();
}