Keresés

Keresendő kifejezés:

Toplista

Toplista
  • betöltés...

Segítség!

Ahhoz, hogy mások kérdéseit és válaszait megtekinthesd, nem kell beregisztrálnod, azonban saját kérdés kiírásához ez szükséges!

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

Márk462 kérdése
39
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
bongolo { Aranyérmes } válasza
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