Keresés


Toplista

Toplista
  • betöltés...

Magántanár kereső

Ha szívesen korrepetálnál, hozd létre magántanár profilodat itt.
Ha diák vagy és korrepetálásra van szükséged, akkor regisztrálj be és írd meg itt, hogy milyen tantárgyban!

C++ programozás dinamikus tömbfoglalás?

344
Sziasztok!
Olyan kérdésem lenne hogy hogy tudok objektumoknak foglalni dinamikus tömböt úgy hogy ne kapjanak értéket az objektumot.
Szóval van egy osztályom ahol a default konstruktorban be kell kérni 2 számot
class Telefon {
int telefonszam;
double internet;
Telefon();
};


Telefon::Telefon() {
//bekérem a telefonszamot es az internetet...
}

és van egy másik osztályom TelefonKatalogus névvel ahol leszeretnék foglalni egy Telefon tömböt amiben ugye a Telefon objektumokat tárolom.

class TelefonKatalogus {
public:
int dbSzam;
Telefon* katalogus;
};
TelefonKatalogus::TelefonKatalogus(int dbSzam) {
this->katalogus = new Telefon[dbSzam];
}

És a baj hogy itt mindig meghívja a Telefon default konstruktorát, amit én viszont nem szeretnék szóval hogy csinálom meg hogy ne töltse fel adatokkal a telefont?
Jelenleg 1 felhasználó nézi ezt a kérdést.
c++, dinamikus, tömbarray
0
Felsőoktatás / Informatika

Válaszok

1
Meg tudod csinálni úgy, hogy malloc-kal foglalsz memóriát aztán amikor igaziból fel akarod tölteni, akkor placement new-val konstruálod meg, de szerintem csúnya módszer. Csak végszükség esetén kell ilyenekhez folyamodni. (Ha nagyon kell, keress utána a placement new-nak google-vel.)

Inkább máshogy érdemes szervezni a dolgokat.
- Ne a konstruktorban kérd be a dolgokat, hanem csinálj egy bekérő függvényt, amit később meghívhatsz. A konstruktor csak tegye rendbe az üres objektumot (ha kell ahhoz valamit csinálni).
- Vagy ne előre foglalj le fix méretű tömböt, hanem mondjuk egy listába szervezd őket, amibe aztán belerakod az objektumokat, ahányat kell.

Az első módszer egyszerűbb és szerintem szebb is. Nem mindig érdemes a konstruktorban nagyon komoly dolgokat csinálni. Főleg ilyet, hogy ott csinálsz valamilyen file vagy billentyűzet olvasást... ha ilyen van konstruktorban, bajban leszel sokféle esetben, kell külön copy konstruktort csinálni, meg move konstruktort, brr.
0