🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #4565

Re: C++ i friends

#4565
From: Sektor van Skijlen
Date: Fri, 15 Jan 1999 20:01
71 lines
3564 bytes
W ostatnim odcinku, Marilyn Manson naskrobal:
: class klasa0
: {
:     friend klasa1;
:  //***etykieta0***
:     klasa0();
: }

: class klasa1
: {
:     klasa0 obiekt;
:  //***etykieta1***
: }

: a w glownym pliku yes:

: void main()
: {
:     klasa1 objjekt;
: }

: i kompilator tfierdzi, ze za chiny nie moze, a co nie moze? otoz: COMPILER
: COULD NOT GENERATE DEFAULT CONSTRUCTOR FOR CLASS 'klasa1'

Po pierwsze - przypominam (nie Tobie jednemu) - prosze pisac, JAKI kompilator.
Kompilatory lubia miec swoje dziwactwa, o czym mialem sie wielokrotnie okazje
przekonac. Ja skopilowalem ten przyklad uzywajac GCC 2.8.1 na Linuxie i
kompilator sie przyplul tylko do tego, ze nie ma zwlok konstruktora klasa0.
Jak go napisalem ( klasa0::klasa0() {} ) to nic juz nie powiedzial.

Masz tam jeszcze jeden blad. Przed deklaracja friend klasa1 nie zostala
zdefiniowana. Winienes tedy napisac "friend class klasa1", bo w tym momencie
kompilator nie wie, co to takiego ta "klasa1".

: Malo tego, teraz lepsze. Jesli w miejsce etykieta0 wpiszemy specyfikator
: public: wszystko chodzi idealnie i kompilator nawet nie smie sie odezwac.
: Wniosek: przyjmuje konstruktor klasy0 jako default konstruktor klasy1. (hmm
: widocznie Stroustrup duzo nad tym myslal i wyszlo mu, ze tak bedzie lepiej)

Nie win Stroustrupa za babole Borlanda :*)) bo zapewne tego kompilatora
uzywales, jak mi sie wydaje. Powiem Ci tylko tyle, ze Borland jest znany z
takich numerow. Kiedys ustawilem w opcjach, zeby parametry przekazywal przez
rejestry (to byl BC 3.1). Jak sie wtedy natknal na jakas czysta metode
wirtualana (mimo, ze ona NIE PRZYJMOWALA i NIE ZWRACALA ZADNYCH parametrow),
to wyrzucal jakis dziwny, niezrozumialy blad (nie przytocze Ci, bo juz nie
pamietam, robilem to jakies 3 lata temu). Kiedy oznaczylem funkcje
modyfikatorem cdecl (albo ustawilem w opcjach, ze ma przekazywac parametry na
stosie w konwencji C), to juz bledu nie bylo. W tym momencie nalezalo wrecz
spytac "Co ma piernik do wiatraka ?". Niestety, zaraz za tym cisnelo sie na
usta zdanie "Tyle co Borland do kompilatorow."...

: Wniosek ogolny: jesli klasa0 yes friendem klasy1 (ma w sobie text "friend
: klasa1;") i ma konstruktor, to klasa1 musi miec tez swoj konstruktor
: (publiczny w tym porzypadku, ale to niewazne), poniewaz inaczej kompilator
: uzyje konstruktora klasy0 jako konstruktora klasy1. (i nasuwa sie pytanie
: WHY??????)

Wniosek ogolny: uzywaj dobrych kompilatorow.

: Podstawowe pytanie: CZY DOBRZE ROZUMUJE?

Widze, ze Borland potrafil w glowach namieszac jeszcze bardziej, niz
Stroustrup (vide moj post z przetlumaczonym wywiadem).



-- 
                        -=* P O Z D R A W I A M ! *=-
    [-=* Ij waiet salden mijn spijr, ta faenen aire ats trauven diaenna *=-]
     ____....----````Sektor van Skijlen: sektor at beer.com''''----....____
                                         <sPAm  @  pROtEctIOn>
Technical Details
Message-ID: <77o6rh$j0q$4@polonez.man.lodz.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!orion.cst.tpsa.pl!netra.daewoo.com.pl!news.task.gda.pl!news.man.lodz.pl!not-for-mail
References: <77nvrc$b30$1@sun1000.pwr.wroc.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!news.nask.pl!orion.cst.tpsa.pl!netra.daewoo.com.pl!news.task.gda.pl!news.man.lodz.pl!not-for-mail
From: Sektor van Skijlen <sektor@spam.org>
Newsgroups: pl.comp.objects
Subject: Re: C++ i friends
Date: 15 Jan 1999 20:01:53 GMT
Lines: 71
Message-ID: <77o6rh$j0q$4@polonez.man.lodz.pl>
References: <77nvrc$b30$1@sun1000.pwr.wroc.pl>
NNTP-Posting-Host: zly.kis.p.lodz.pl
User-Agent: tin/pre-1.4-981225 ("Volcane") (UNIX) (SunOS/5.5.1 (i86pc))
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit