🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
8 messages
8 total messages Started by Aquila Wed, 02 Apr 2003 16:51
C++ constructor probleem
#5530
Author: Aquila
Date: Wed, 02 Apr 2003 16:51
37 lines
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
#5537
Author: Bert Peers
Date: Thu, 03 Apr 2003 16:05
18 lines
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
#5535
Author: Aquila
Date: Thu, 03 Apr 2003 16:51
27 lines
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
#5538
Author: Bert Peers
Date: Thu, 03 Apr 2003 17:06
21 lines
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
#5540
Author: Aquila
Date: Thu, 03 Apr 2003 18:11
30 lines
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
#5539
Author: Aquila
Date: Thu, 03 Apr 2003 18:17
24 lines
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
#5541
Author: Bert Peers
Date: Thu, 03 Apr 2003 20:43
15 lines
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
#5542
Author: Aquila
Date: Fri, 04 Apr 2003 06:21
17 lines
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