Article View: be.comp.programming
Article #4603Re: scope probleem (denk ik) in vc++
From: Harbinger of Doom
Date: Tue, 15 Jul 2003 21:19
Date: Tue, 15 Jul 2003 21:19
118 lines
5503 bytes
5503 bytes
"Slayerke" <slayerkenospammer@slayerke.co.uk> schreef in bericht
news:lVYQa.11896$F92.1353@afrodite.telenet-ops.be...
> Harbinger of Doom wrote:
>
> >
> > "Nicolas Barbier" <anti@spam.invalid> schreef in bericht
> > news:3f1452ac$0$6523$afc38c87@sisyphus.news.be.easynet.net...
> >> Harbinger of Doom wrote:
> >>
> >> > Sorry voor de engelse tekst,
> >> > maar kheb dit berichtje in verschillende nieuwsgroepen gepost
> >> > en kben vanavond te lui om het naar 't nederlands
> >> > te vertalen!
> >>
> >> Multiposten wordt als "extreem evil" beschouwd op USENET.
> >
> > ekskuzeer,
> > /me wist dit niet.
> > then again.... evil is fun ;-) hehe
> >
> >> > yet when I declare 'connection' in the class definition of 'Node'
> > (instead
> >> > of in the Node::connect() function)
> >> > so that it would have class-scope,
> >> > I get compile errors whenever I use a Node object.
> >>
> >> Als in "Node" een "NodeHttpConnection" zit ingebed, wordt van het 2e de
> >> copy-constructor aangeroepen telkens de copy-constructor van "Node"
wordt
> >> aangeroepen (als je er zelf geen hebt gedefinieerd voor "Node").
> >
> > Dat is volgens mij niet echt het probleem.
> >
> > Noch "Node", noch "NodeHttpConnection" hebben een copy constructor.
> > Volgens wat ik lees in de VC++ manual zou de compiler er dan z�lf een
> > moeten aanmaken
> > die gewoon de default constructor aanroept.
> > Blijkbaar gebeurd dat al goed en wel, zolang ik mijn
> > NodeHttpConnection-object declareer
> > binnen Node::connect();
> > maar gebeurd dat niet meer als ik mijn NodeHttpConnection-object
declareer
> > in de
> > klasse-definitie van "Node"
> > De compiler-errors reppen ook niets over een copy-constructor voor
> > "NodeHttpConnection",
> > enkel over een voor "Node"
> >
> > Ofwel begrijp ik je verkeerd.
> In het geval dat je het lokaal gebruikt, wordt er voor NodeHttpConnection
> geen copyconstructor gebruikt (tenzij je nog andere code staan hebt die
dat
> wel doet). Een copyconstructor door de compiler gegenereerd doet ook meer
> dan de default-constructor aanroepen, alle gewone variabelen (en pointers
> dus) worden letterlijk gekopieerd, voor objecten wordt de
object-specifieke
> copyconstructor gebruikt.
> Wat zijn de errors letterlijk, hij gaat toch _iets_ meer zeggen dan enkel:
> no copy constructor defined for Node?
>
> Misschien eens zelf een copyconstructor maken en kijken wat de compiler
dan
> uitvindt als error.
De errors die ik krijg:
LIJN:
result =
calculateCreationTime(buffer[pointer+11],buffer[pointer+10],buffer[pointer+9
],buffer[pointer+8], result); //result zijnde een Node-object
DEFINITIE VAN calculateCreationTime():
Node calculateCreationTime(int byte1, int byte2, int byte3, int byte4, Node
a);
ERROR:
e:\nodelist.h(75) : error C2664: 'calculateCreationTime' : cannot convert
parameter 5 from 'class Node' to 'class Node'
No copy constructor available for class 'Node'
LIJN:
return result; //result zijnde een Node-object
ERROR:
e:\nodelist.h(77) : error C2558: class 'Node' : no copy constructor
available
LIJN:
sn = nl.getNode(i); //sn zijnde een Node-object en getNode() zijnde een
functie die een Node-object returned
ERROR:
E:\mfcDlg.cpp(199) : error C2582: 'Node' : 'operator =' function is
unavailable
Ik vind het raarste van alles nog steeds dat ik errors krijg ivm
een copy-constructor voor "Node", en niet voor "NodeHttpConnection".
Zoals Nicholas al zei. Er wordt een copy-constructor aangeropen van
"NodeHttpConnection"
als er een copy-constructor van "Node" aangeroepen wordt.
Bijgevolg zou ik toch voor beide moeten errors krijgen? of niet?
Eerst dacht ik dat door ��n of ander kutfoutje de klasse "Node" misschien
niet
meer gecompileerd werd, maar gezien dat ik geen error krijg bij de
declaratie
van een Node-object, wil dat volgens mij zeggen dat de default constructor
wel nog werkt, dus moet het toch zijn dat Node gecompileerd wordt.
Ik denk trouwens dat ik een "undeclared identifier"-error zou krijgen
telkens ik het woord "Node" gebruik in andere klassen en functies.
--
HoD
Technical Details
Message-ID:
<yd_Qa.12649$9O7.1169736894@hestia.telenet-ops.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!news.tele.dk!news.tele.dk!small.news.tele.dk!newsgate.cistron.nl!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!hestia.telenet-ops.be.POSTED!not-for-mailReferences:
<A6YQa.12562$x86.1129888907@hestia.telenet-ops.be> <3f1452ac$0$6523$afc38c87@sisyphus.news.be.easynet.net> <nnYQa.12574$m97.1134117932@hestia.telenet-ops.be> <lVYQa.11896$F92.1353@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII X-Google-Thread: fcea4,95543aa8161eaaf9 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2003-07-15 14:31:44 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-06!sn-xit-09!supernews.com!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed.fjserv.net!news.tele.dk!news.tele.dk!small.news.tele.dk!newsgate.cistron.nl!aotearoa.belnet.be!news.belnet.be!ossa.telenet-ops.be!hestia.telenet-ops.be.POSTED!not-for-mail From: "Harbinger of Doom" <slavearc@pandora.be> Newsgroups: be.comp.programming References: <A6YQa.12562$x86.1129888907@hestia.telenet-ops.be> <3f1452ac$0$6523$afc38c87@sisyphus.news.be.easynet.net> <nnYQa.12574$m97.1134117932@hestia.telenet-ops.be> <lVYQa.11896$F92.1353@afrodite.telenet-ops.be> Subject: Re: scope probleem (denk ik) in vc++ Lines: 120 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2600.0000 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Message-ID: <yd_Qa.12649$9O7.1169736894@hestia.telenet-ops.be> Date: Tue, 15 Jul 2003 21:19:26 GMT NNTP-Posting-Host: 213.224.116.68 X-Complaints-To: abuse@telenet.be X-Trace: hestia.telenet-ops.be 1058303966 213.224.116.68 (Tue, 15 Jul 2003 23:19:26 CEST) NNTP-Posting-Date: Tue, 15 Jul 2003 23:19:26 CEST Organization: Telenet Internet