Pereiti prie turinio

Dinaminis konteineris konteineryje C++


Rekomenduojami pranešimai

Sveiki, noriu issiaiskinti su dinaminiais masyvais klasese.

Tatkime apsirasau klase su vienu dinaminiu masyvu:

 

class Studentas{
private:
string fakultetas, vardas, grupe;
int *balai;
int nmax;
int n;
void KeitiMasyva(int kiek);
public:
Studentas(int nmax = 0);
~Studentas();

void DetiFakultetas(string fakultetas);
void DetiVardasGrupe(string vardas, string grupe);
void DetiBalai(int i, int paz){balai[i] = paz;}

string ImtiFakultetas(){return fakultetas;}
string ImtiVardas(){return vardas;}
string ImtiGrupe(){return grupe;}
int Imti(int i){return balai[i];}
};

Studentas::Studentas(int nmax){
if(nmax > 0){
	balai = new int [nmax];
}
}

void Studentas::KeitiMasyva(int kiek){
 if(kiek > nmax){
	 int *Naujas = new int[kiek];
	 for(int i=0; i<n; i++)
		 Naujas[i] = balai[i];
	 delete [] balai;
	 balai = Naujas;
	nmax = kiek;
 }
 else if(kiek < nmax){
	 int *Naujas = new int[kiek];
	 for(int i=0; i<n; i++)
		 Naujas[i] = balai[i];
	 delete [] balai;
	 balai = Naujas;
	 n = nmax = kiek;
 }
}

Realizuoju destruktoriu

Studentas::~Studentas(){
if(balai){
	delete []balai;
	balai = NULL;
}
}

void Studentas::DetiFakultetas(string fakultetas){
 Studentas::fakultetas = fakultetas;
}

void Studentas::DetiVardasGrupe(string vardas, string grupe){
 Studentas::vardas = vardas;
 Studentas::grupe = grupe;
}

Kita klase, kurioje saugomi Studentai:

class Fakultetas{
private:
Studentas *Stud; // studentu masyvas
int n; // masyvo dydis
int nmax; // maksimalus masyvo dydis
public:
Fakultetas():n(0), Stud(NULL), nmax(0){}
Fakultetas(int n, int nmax):
	n(n), nmax(nmax){}
~Fakultetas();
void DetiMas(Studentas S){Stud[n++] = S;}
Studentas Reiksme(int i){return Stud[i];}
void Didinti(int n);
};

Fakultetas::~Fakultetas(){
if(Stud){
	delete[] Stud;
	Stud = NULL;
}
}

Ar viskas mano klasese tvarkoje? Kaip su Fakultetas klase, ar nepamirsau kazkokiu funkciju, kad viskas vyktu tvarkoje?

Redagavo mendinskis
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...