new w konstruktorze

0

Witam!

Mam nastujące pytanie:
jak mamy new w konstruktorze jakiejś klasy i zwróci on NULL to jak elegancko i bezpiecznie zatrzymać dalsze tworzenie obiektu i w ostateczności spowodować aby wcale nie powstał. Jak CBuilderze próbowałem po new wpisać [code]return NULL;[/code]to nie chciał przyjąć.

0

Nie mozesz w konstruktorze dawac return, to nie jest zwykła funkcja.

Zastosuj try, catch. Wiecej ci nie powiem bo nigdy tego nie uzywalem :P.

0

Wg mnie nie można zatrzymac tworzenia obiektu . Nie wyobrażam sobie tego . Jak napiszesz tak :
Klasa Obiekt;
to co wg ciebie ma sie stac jak sie obiekt nie utworzy ?? Co będzie tym obiektem ??
Wg mnie musisz przeorganizować program , mozna to łatwo obejść .
Ja bym to np zrobił tak :
w konstruktorze sprawdzałbym czy new coś zaalokowało , jak nie to jakiejś zmiennej składowej tej klasy przypisałbym jakąś wartość ( np 0 ) . Wszystkie obiekty tworzyłbym przy pomocy new , a jakby po utworzeniu wartość tej zmiennej była 0, to wtedy bym kasował za pomocą delete caly obiekt .Nic innego teraz nie przychodzi mi do głowy , o 5:00 wstałem do pracy i dopiero teraz przyszedłem do domu , więc jak palnąłem głupstwo to wybacz .

0

W sumie to będzie najlepsze wyjście z sytuacji i jedyne rozsądne. Chciałem kiedyś coś takiego zastosować ale uznałem, że może ktoś coś lepszego wymyśli.
Dzięki za zainteresowanie :-)

0

W sumie to będzie najlepsze wyjście z sytuacji i jedyne rozsądne

Wybacz ale ja sie caly czas zastanawiam po co Ci to ?

0

Ja też nie wiem po co to... W sumie chyba następuje niezrozumienie idei programowania obiektowego... Proponuje cofnąć sie do źródeł... :-/

0

Nie wiem czy to niezrozumienie programowania obiektowego. Niewykluczone. Chodzi mi o to, że w obiekcie mam powiedzmy coś takiego
[code]
TList *List;
[/code]
a w konstruktorze tego obiektu
[code]
List = new TList;
[/code]
I jeżeli teraz to się nie powiedzie to cały obiekt jest powiedzmy bezużyteczny. Jak wyjść z takiej sytuacji?

0

Nie wiem czy to niezrozumienie programowania obiektowego. Niewykluczone. Chodzi mi o to, że w obiekcie mam powiedzmy coś takiego
[code]
TList *List;
[/code]
a w konstruktorze tego obiektu
[code]
List = new TList;
[/code]
I jeżeli teraz to się nie powiedzie to cały obiekt jest powiedzmy bezużyteczny. Jak wyjść z takiej sytuacji?

to wtedy List == NULL :)

0

Widż, że mamy małe problemy z porozumieniem się :> Zostawcie już ten temat :d

1 użytkowników online, w tym zalogowanych: 0, gości: 1