/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
class constructor skal returnere NULL
Fra : Desilva


Dato : 13-05-02 16:51

Jeg vil gerne være i stand til at lade en constructor returnere NULL hvis
ex. der er ugyldige parametere med i constructor kaldet, så man kan gøre
alle.

CMyClass *MyClass=new CMyClass(23);
if (!MyClass) så gik der noget galt.
...men hvordan gør jeg i praksis dette da en constructor jo netop ikke kan
returnere andet end "this"..?



 
 
Anders Borum (13-05-2002)
Kommentar
Fra : Anders Borum


Dato : 13-05-02 17:21

"Desilva" <private@online.dk> skrev i en meddelelse
news:abon78$1hbm$1@news.cybercity.dk...
> Jeg vil gerne være i stand til at lade en constructor returnere NULL hvis
> ex. der er ugyldige parametere med i constructor kaldet, så man kan gøre
> alle.

En constructor kan ikke returnere noget. Heller ikke en this-pointer.

> CMyClass *MyClass=new CMyClass(23);
> if (!MyClass) så gik der noget galt.
> ..men hvordan gør jeg i praksis dette da en constructor jo netop ikke kan
> returnere andet end "this"..?

Du kan kaste en undtagelse i din constructor hvis noget går galt.
Så er du sikker på at det dårlige objekt aldrig bliver brugt.

En anden mulighed er at have en metode der afgør om objektet
er gyldigt og kan bruges. Så kan du checke dette først.
Vha. operator-overloading kan det minde lidt dit null-pointer test.

Hilsen Anders

bool MyClass:erator!(void)const {
return !_valid;
}
MyClass:erator bool()const {
return _valid;
}

CMyClass *MyClass=new CMyClass(23);
if (!*MyClass) så gik der noget galt.




Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste