Hogyan inicializáljam a tömböt a konstruktorban? És lehetséges valahogy az inicializáló listában inicializálni a tömböt?
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 ;
}
Hibaüzenet:
cannot convert '<brace-enclosed initializer list>' to 'short int' in assignment
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.
"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?
"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.
std::array ;
std::vector ;
ezek az STL ben vannak mert a szabványban nem találom.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!