Kezdőoldal » Számítástechnika » Programozás » Hogyan inicializáljam a...

Hogyan inicializáljam a tömböt a konstruktorban? És lehetséges valahogy az inicializáló listában inicializálni a tömböt?

Figyelt kérdés

Itt a kód:

// main.cpp


# include <iostream>


class cProba

{

public:

cProba()

{

array[5] = {0,0,0,0,0};

}


short array[5] ;

};



int main()

{

cProba obj ;

std::cout << *obj.array ;


return 0 ;

}


2012. okt. 23. 00:21
 1/7 A kérdező kommentje:

Hibaüzenet:

cannot convert '<brace-enclosed initializer list>' to 'short int' in assignment

2012. okt. 23. 00:22
 2/7 iostream ***** válasza:

array[5] = {0,0,0,0,0};


Erre mondja. Mivel az array[5] egy shirt típusú ojjektum, ezért teljesen érthető a fordító panasza :)

Ha előre ismered a tömb méretét, akkor használd az std::array típust, azt lehet inicializálni.

2012. okt. 23. 13:20
Hasznos számodra ez a válasz?
 3/7 A kérdező kommentje:

"Erre mondja. Mivel az array[5] egy shirt típusú ojjektum, ezért teljesen érthető a fordító panasza"


Ezt nem értem.

Egy változó is lehet short típusú azt meg mégis tudom inicializálni.


Le tudnátok írni,hogy hogyan csináljam?

Az inicializáló listába nem lehetne inicializálni?

2012. okt. 23. 21:04
 4/7 A kérdező kommentje:
Akkor mondjátok meg,hogy miért nem lehet tömböt konstruktorban és a konstruktor inicializáló listájában inicializálni?
2012. okt. 23. 22:50
 5/7 iostream ***** válasza:

"Ezt nem értem.

Egy változó is lehet short típusú azt meg mégis tudom inicializálni."


Igen, de te egy {0, 0, 0, 0, 0} kifejezéssel szeretnéd inicializálni, ami a legjobb esetben is inicializáló lista, régebbi fordítón csak szimplán <brace-enclosed initializer list>. A shortot meg nem lehet abból inicializálni.


"Akkor mondjátok meg,hogy miért nem lehet tömböt konstruktorban és a konstruktor inicializáló listájában inicializálni?"


A konstruktorban (ha ez alatt a konstruktor törzsét érted) azért nem, mert mire oda érsz, az összes bázisosztály és az összes tagváltozó inicializálva van (vagy ha nem is, már létrejött memóriaszeméttel, beépített típusok esetén), ott már csak értéket lehet neki adni.

Ha nagyon ragaszkodsz a tömbödhöz, akkor tessék, 1 perc guglizás: [link]


De még mindig azt mondom, hogy ha tudod előre a méretet, akkor std::array, ha nem, akkor std::vector. Szinte soha nincs ok arra, hogy tömböket vagy pointereket használj.

2012. okt. 24. 09:55
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:

std::array ;

std::vector ;


ezek az STL ben vannak mert a szabványban nem találom.

2012. okt. 25. 03:45
 7/7 iostream ***** válasza:

Az STL része a szabványnak. Sőt, az STL egy nem hivatalos fogalom, és a szabványos könyvtár egy részét jelöli.


[link]

[link]

2012. okt. 25. 13:57
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!