🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

3 total messages Started by Karpierz Mon, 01 Dec 1997 21:35
Problem z konstruktorem kopiujacym
#387
Author: Karpierz
Date: Mon, 01 Dec 1997 21:35
21 lines
1695 bytes
Witam wszystkich piszacych w C++.
Mam prosbe o podanie rozwiazania problemu (dla mnie dosc powaznego).
Jak mianowicie wykryc na etapie kompilacji wszystkie miejsca w ktorych
jest wywolywany konstruktor kopiujacy danej klasy.
Reczne  przegladanie programu nie wchodzi w gre gdyz kod zrodlowy
liczy ok 8MB.
Problem jest o tyle zlozony ze klasa jest nieporzadnie zaprojektowana
i program niekiedy ma prawo sie wysypac jezeli jest tworzony dynamicznie
lub na stosie nowy obiekt tej klasy. Mozliwe jest jedynie referencyjne
odwolanie do obiektu stworzonego raz przy starcie programu. 
Podobna sprawa jest z operatorem przypisania ale tu jest mozliwosc
takiej sztucznej jego implementacji ze zwracanym wynikiem bedzie 
jakis sztuczny typ lub void i kompilator sie zbuntuje.
W przypadku konstruktora kopiujacego niestety ta metoda nie jest mozliwa.
Opuszczenia konstruktora spowoduje wygenerowania domyslnego wiec
tez nic to nie da.
Wszelkie pomysly mile widziane ! :)  Z gory dziekuje za pomoc.
-- 
Pozdrawiam                                         Adam Karpierz   
mailto:karpierz@intertele.pl
http://www.intertele.pl/users/karpierz 
Re: Problem z konstruktorem kopiujacym
#388
Author: Stanislaw Bochnak
Date: Tue, 02 Dec 1997 11:54
26 lines
1599 bytes
1) Zadeklaruj konstruktor kopiujacy jako prywatny i nie definuj jego
implementacji.
	Podobnie zrob z operatorem przypisania.

	Dzieki temu zapobiegniesz wygenerowaniu domyslnych konstruktorow. 
	Potem trzeba zrekompilowac i zlinkowac system. Linker zglosi Ci moduly,
	w ktorych te funkcje byly uzywane.

2) Zdefiniuj konstruktor z instrukcja __asm int 3, w srodku. Jesli
zostanie wywolany,
	wygeneruje tzw. breakpoint.
	
Zalety i wady:
1) 	+ automatycznie znajdzie wszystkie moduly
	- w samym module trzeba sie "martwic" samemu - po prostu przeglad kodu.

2)	+ ogladajac stos wywolan dokladnie wiesz, skad wywolano Twoj
konstruktor
	- nie masz gwarancji, ze podales wszystkie mozliwe sekwencje wejsciowe
	i tym samym, ze znalazles wszystkie wywolania!

Moze trzeba by zastosowac mieszanke obydwu w podanej wyzej kolejnosci.

Pozdrawiam,

Stanislaw Bochnak
Re: Problem z konstruktorem kopiujacym
#389
Author: Karpierz
Date: Tue, 02 Dec 1997 18:21
13 lines
1274 bytes
Stanislaw Bochnak <S.Bochnak@microTOOL.com.pl_nospam> 
napisal

> 1) Zadeklaruj konstruktor kopiujacy jako prywatny i nie definuj jego
> implementacji.
> 	Podobnie zrob z operatorem przypisania.

Dziekuje za pomoc. Problem zniknal :)

-- 
Pozdrawiam                                         Adam Karpierz   
mailto:karpierz@intertele.pl
http://www.intertele.pl/users/karpierz 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads