Thread View: be.comp.programming
8 messages
8 total messages
Started by Aquila
Wed, 02 Apr 2003 16:51
C++ constructor probleem
Author: Aquila
Date: Wed, 02 Apr 2003 16:51
Date: Wed, 02 Apr 2003 16:51
37 lines
2697 bytes
2697 bytes
Voor een project ontwerpen wij een wiskundige library, die een aantal fundamentele types ondersteunt zoals matrix, vector, rational, complex en verylong (onbegrensde int). Alleen die laatste klasse is niet getemplatiseerd. Nu krijgen we problemen in onze code als we een matrix<complex<rational<verylong>>> proberen te maken. Het probleem is namelijk dat gcc plots verward raakt, en niet meer kan kiezen tussen de copyconstructor en de gewone constructor. De fout ziet er als volgt uit: testmatrix.cxx: In member function `void Test::TestMatrix::testConstructor() [with AT = WiskTypes::Complex<WiskTypes::Rational<WiskTypes::VeryLong> >]': testmatrix.cxx:23: instantiated from `void Test::testTypes(CppUnit::TestSuite*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >) [with AT = WiskTypes::Complex<WiskTypes::Rational<WiskTypes::VeryLong> >]' testmatrix.cxx:73: instantiated from here testmatrix.cxx:92: no matching function for call to ` WiskTypes::Complex<WiskTypes::Rational<WiskTypes::VeryLong> >::Complex(int)' ../complex.h:54: candidates are: WiskTypes::Complex<AT>::Complex(const WiskTypes::Complex<AT>&) [with AT = WiskTypes::Rational<WiskTypes::VeryLong>] ../complex.h:48: WiskTypes::Complex<AT>::Complex(AT = (AT)(0), AT = (AT)(0)) [with AT = WiskTypes::Rational<WiskTypes::VeryLong>] Waarbij in testmatrix op die plaats WiskTypes::Matrix<AT>(4,6,AT(7)) staat, en in complex.h dus de declaraties staan van respectievelijk de copyconstructor en een gewone constructor op basis van 2 argumenten AT. De vraag is dus: waarom gaat dit fout, en wat kunnen we eraan doen? -- Pleased to meet you Hope you guess my name But what's puzzling you Is the nature of my game
Re: C++ constructor probleem
Author: Bert Peers
Date: Thu, 03 Apr 2003 16:05
Date: Thu, 03 Apr 2003 16:05
18 lines
1768 bytes
1768 bytes
Aquila wrote: > Waarbij in testmatrix op die plaats WiskTypes::Matrix<AT>(4,6,AT(7)) staat, > en in complex.h dus de declaraties staan van respectievelijk de > copyconstructor en een gewone constructor op basis van 2 argumenten AT. > > De vraag is dus: waarom gaat dit fout, en wat kunnen we eraan doen? Wel, geraakt ie d'r aan uit als je gewoon een WiskTypes::Complex<WiskTypes::Rational<WiskTypes::VeryLong> > (7) aanmaakt, zonder al de rest ? Tenzij het niet daar is dat het flipt -- zonder source code is het gokken of je bedoelt wat ik denk dat je bedoelt :) Bert
Re: C++ constructor probleem
Author: Aquila
Date: Thu, 03 Apr 2003 16:51
Date: Thu, 03 Apr 2003 16:51
27 lines
2080 bytes
2080 bytes
Bert Peers <piek@ab.oo> wrote: >Aquila wrote: > >> Waarbij in testmatrix op die plaats WiskTypes::Matrix<AT>(4,6,AT(7)) staat, >> en in complex.h dus de declaraties staan van respectievelijk de >> copyconstructor en een gewone constructor op basis van 2 argumenten AT. >> >> De vraag is dus: waarom gaat dit fout, en wat kunnen we eraan doen? > >Wel, geraakt ie d'r aan uit als je gewoon een > >WiskTypes::Complex<WiskTypes::Rational<WiskTypes::VeryLong> > (7) > >aanmaakt, zonder al de rest ? > Dat doet hij zonder problemen... Dat is het bizarre van de zaak. >Tenzij het niet daar is dat het flipt -- zonder source code is >het gokken of je bedoelt wat ik denk dat je bedoelt :) > Het probleem is dat dit een project is voor de unief, en dat er nog groepen hetzelfde project moeten doen. (En ook dezelfde problemen hebben, daarom dat het redelijke source-onafhankelijk is.) -- Aquila "May the source be with you"
Re: C++ constructor probleem
Author: Bert Peers
Date: Thu, 03 Apr 2003 17:06
Date: Thu, 03 Apr 2003 17:06
21 lines
1943 bytes
1943 bytes
Aquila wrote: >>Wel, geraakt ie d'r aan uit als je gewoon een >> >>WiskTypes::Complex<WiskTypes::Rational<WiskTypes::VeryLong> > (7) >> >>aanmaakt, zonder al de rest ? > > Dat doet hij zonder problemen... Dat is het bizarre van de zaak. Inderdaad vreemd. Rollen er verder geen warnings uit, bv. dat je de template depth overschrijdt ? 't Lijkt me sterk dat je constructie dat zou doen, de default is 17 dacht ik, maar je weet nooit ( -ftemplate-depth-40 ertegenaan anders of zo). Anders weet ik het ook niet -- misschien eens proberen met expliciet een constructor toe te voegen met 1 argument, ipv degene met 2 argumenten default parameters te geven ? Bert
Re: C++ constructor probleem
Author: Aquila
Date: Thu, 03 Apr 2003 18:11
Date: Thu, 03 Apr 2003 18:11
30 lines
2076 bytes
2076 bytes
Bert Peers wrote: > Aquila wrote: > >>>Wel, geraakt ie d'r aan uit als je gewoon een >>> >>>WiskTypes::Complex<WiskTypes::Rational<WiskTypes::VeryLong> > (7) >>> >>>aanmaakt, zonder al de rest ? >> >> Dat doet hij zonder problemen... Dat is het bizarre van de zaak. > > Inderdaad vreemd. Rollen er verder geen warnings uit, bv. > dat je de template depth overschrijdt ? 't Lijkt me sterk > dat je constructie dat zou doen, de default is 17 dacht ik, > maar je weet nooit ( -ftemplate-depth-40 ertegenaan anders > of zo). > Geen verdere warnings, code compileert met Wall zonder 1 warning. > Anders weet ik het ook niet -- misschien eens proberen met > expliciet een constructor toe te voegen met 1 argument, > ipv degene met 2 argumenten default parameters te geven ? > Dat zal ik eens proberen... ik laat het resultaat weten. -- Pleased to meet you Hope you guess my name But what's puzzling you Is the nature of my game
Re: C++ constructor probleem
Author: Aquila
Date: Thu, 03 Apr 2003 18:17
Date: Thu, 03 Apr 2003 18:17
24 lines
1928 bytes
1928 bytes
Bert Peers wrote: > Aquila wrote: > >>>Wel, geraakt ie d'r aan uit als je gewoon een >>> >>>WiskTypes::Complex<WiskTypes::Rational<WiskTypes::VeryLong> > (7) >>> >>>aanmaakt, zonder al de rest ? >> >> Dat doet hij zonder problemen... Dat is het bizarre van de zaak. > > Anders weet ik het ook niet -- misschien eens proberen met > expliciet een constructor toe te voegen met 1 argument, > ipv degene met 2 argumenten default parameters te geven ? > Dan begint hij te twijfelen tussen de constructor met 1 �n met 2 argumenten, en de copyconstructor. Ik blijf het h��l raar vinden, het is een of andere kronkel in de compiler die je niet verwacht... -- Pleased to meet you Hope you guess my name But what's puzzling you Is the nature of my game
Re: C++ constructor probleem
Author: Bert Peers
Date: Thu, 03 Apr 2003 20:43
Date: Thu, 03 Apr 2003 20:43
15 lines
2140 bytes
2140 bytes
Aquila wrote: >>Anders weet ik het ook niet -- misschien eens proberen met >>expliciet een constructor toe te voegen met 1 argument, >>ipv degene met 2 argumenten default parameters te geven ? > > Dan begint hij te twijfelen tussen de constructor met 1 �n met 2 argumenten, > en de copyconstructor. Ik blijf het h��l raar vinden, het is een of andere > kronkel in de compiler die je niet verwacht... Ook als de constructor met 2 argumenten geen default parameters heeft ??? In dat geval is er toch echt wel iets mis... Overigens om automatische conversie uit te sluiten, al eens geprobeerd met een welgemikte 'explicit', just in case ?.. Bert
Re: C++ constructor probleem
Author: Aquila
Date: Fri, 04 Apr 2003 06:21
Date: Fri, 04 Apr 2003 06:21
17 lines
1855 bytes
1855 bytes
Bert Peers wrote: > Ook als de constructor met 2 argumenten geen default parameters > heeft ??? In dat geval is er toch echt wel iets mis... Inderdaad, dat zou niet mogen. Maar wat kan er fout lopen? > Overigens om automatische conversie uit te sluiten, al eens > geprobeerd met een welgemikte 'explicit', just in case ?.. > Daar ga ik straks mij mee amuseren, ik laat het resultaat weten. Alvast bedankt voor je hulp! -- Pleased to meet you Hope you guess my name But what's puzzling you Is the nature of my game
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