Jak zablokowac bezposrednie tworzenie objektow.

0

Takie pytanko: Czy można jakoś zablokować bezpośrednie tworzenie obiektów (Dupa dupa_instance;) tak aby można było je nadal tworzyć za pomocą new ? Wiem, że można by przenieść konstruktor i operator= do sekcji protected i zrobić statyczną fabrykę(Dupa *dupa_instance = Dupa::Create();) ale wtedy wszystkie klasy dziedziczące będą musiały zaimplementować metodę Create() a to nie za bradzo mi się widzi.

//Edit: BTW Co za debil dał bana na cały plusgsm na kanale irc ? Od razu trzeba było zabanować domenę .pl, gratuluje pomysłowości...

0

Mozesz przeladowac operator new, ale lepiej jest jednak zrobic statyczna fabryke. Klasy dziedziczace beda mogly sobie napisac publiczne konstruktory i korzystac z chronionych.

BTW. Ze sprawami dotyczacymi bana to do osoby odpowiedzialnej za irc...

0

No właśnie ta statyczna fabryka mi nie daje tego co chce osiągnąć, tzn chce mieć gwarancje, że cała hierarchia obiektów dziedziczących z Object będzie tworzona przez new. Poza tym jak nawet wywołam sobie Dupa2::Create() kiedy dupa2 dziedziczy z dupa i NIE zaimplementuje metody Create to powstanie obiekt Dupa a nie o to przecież chodzi. W ogóle to chcę zrobić klasę która będzie zliczać referencje. Nie chcę tego robić na inteligentnych wskaźnikach. W takim razie objekt podstawowy musi posiadać coś na kształt metod AddRef i Release. Jeżeli Release ma poprawnie działać to obiekt musi usunąć sam siebie przez delete this a to stwarza konieczność przechowywania obiektów jako wskaźniki. Może to trochę zamotałem, ale i tak większość obiektów nie licząc tych pomocniczych typu vector3d albo np string siedzi jako wskaźniki więc to nie zmienia mojej koncepcji kodu, ale nigdy nie mogę być pewny jak ktoś potem po mnie będzie tego używać.

0

Mozesz przeladowac operator new

Nie można przeładowywać operatora new, delete i ::

0
Pokemaniak napisał(a)

Mozesz przeladowac operator new

Nie można przeładowywać operatora new, delete

Buaaahahahahaha - na twoim miejscu Od razu wykasował bym wpis "C++" w polu "Języki programowania"

0
Ktoś napisał(a)
Pokemaniak napisał(a)

Mozesz przeladowac operator new

Nie można przeładowywać operatora new, delete

Buaaahahahahaha - na twoim miejscu Od razu wykasował bym wpis "C++" w polu "Języki programowania"

Jak on C++ i C++ Builder uważa za 2 języki programowania to się nie dziwię :D
PS. wystarczy wpisać C++ :D

0

@Zombiak
Konstruktor prywatny (lub chroniony).

// Edit: O nie doczytałem posta Johnego. Sory.

0
Zombiak napisał(a)

Co za debil dał bana na cały plusgsm na kanale irc ? Od razu trzeba było zabanować domenę .pl, gratuluje pomysłowości...

Hamuj sie, akick bez powodu nie byl założony

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