C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Constructeur "par defaut"

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Mathieu Malaterre
Guest





PostPosted: Wed Jun 23, 2004 3:21 am    Post subject: Constructeur "par defaut" Reply with quote



Voila mon probleme j'ai une classe:

class foo{
public:
foo(bool b);
foo(std::string const &s);
};

Le probleme c'est que lorsque je l'utilise typiquement en passant
argv[1] (const char*), c++ definit comme comportement par defaut de
prendre l'operation la plus simple. Dans mon cas il va caster mon const
char* en bool plutot que de demander le constructeur de string.

Est-ce qu'un guru c++ sait s'il y a un moyen de force la bete a utiliser
celui que je veux ?

Merci
Mathieu
Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Jun 23, 2004 3:55 am    Post subject: Re: Constructeur "par defaut" Reply with quote



On Wed, 23 Jun 2004 03:21:53 GMT, Mathieu Malaterre <malat (AT) free (DOT) fr>:

Quote:
Le probleme c'est que lorsque je l'utilise typiquement en passant
argv[1] (const char*)

Non, char* (du moins si tu parles bien des arguments de main()).

Quote:
Est-ce qu'un guru c++ sait s'il y a un moyen de force la bete a utiliser
celui que je veux ?

foo mon_fou (std::string (argv[1]));


--
schtroumpf schtroumpf

Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Jun 23, 2004 3:57 am    Post subject: Re: Constructeur "par defaut" Reply with quote



On Wed, 23 Jun 2004 05:55:44 +0200, Fabien LE LEZ
<gramster (AT) gramster (DOT) com>:

Quote:
foo mon_fou (std::string (argv[1]));

Au fait, est-ce que ceci est considéré comme un cast, au même titre
que static_cast<std::string>(argv[1]) ?


--
schtroumpf schtroumpf

Back to top
Jean-Marc Bourguet
Guest





PostPosted: Wed Jun 23, 2004 6:18 am    Post subject: Re: Constructeur "par defaut" Reply with quote

Mathieu Malaterre <malat (AT) free (DOT) fr> writes:

Quote:
class foo{
public:
foo(bool b);
foo(std::string const &s);
};

Le probleme c'est que lorsque je l'utilise typiquement en passant argv[1]
(const char*), c++ definit comme comportement par defaut de prendre
l'operation la plus simple. Dans mon cas il va caster mon const char* en
bool plutot que de demander le constructeur de string.

Est-ce qu'un guru c++ sait s'il y a un moyen de force la bete a utiliser
celui que je veux ?

Ajouter le constructeur
foo(char const*);
naturellement.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Jean-Marc Bourguet
Guest





PostPosted: Wed Jun 23, 2004 6:19 am    Post subject: Re: Constructeur "par defaut" Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On Wed, 23 Jun 2004 05:55:44 +0200, Fabien LE LEZ
[email]gramster (AT) gramster (DOT) com[/email]>:

foo mon_fou (std::string (argv[1]));

Au fait, est-ce que ceci est considéré comme un cast, au même titre
que static_cast<std::string>(argv[1]) ?

Ca fait la meme operation: appel au constructeur std::string(char const*).

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Back to top
Fabien LE LEZ
Guest





PostPosted: Wed Jun 23, 2004 6:20 am    Post subject: Re: Constructeur "par defaut" Reply with quote

On 23 Jun 2004 08:19:15 +0200, Jean-Marc Bourguet <jm (AT) bourguet (DOT) org>:

Quote:
Au fait, est-ce que ceci est considéré comme un cast, au même titre
que static_cast<std::string>(argv[1]) ?

Ca fait la meme operation

Je sais. Ma question n'est qu'une question de vocabulaire : peut-on
appeler ça un "cast" ?


--
schtroumpf schtroumpf

Back to top
Aurélien REGAT-BARREL
Guest





PostPosted: Wed Jun 23, 2004 8:11 am    Post subject: [HS] Constructeur "par defaut" Reply with quote

Quote:
Voila mon probleme j'ai une classe:

class foo{
public:
foo(bool b);
foo(std::string const &s);
};


Ne serait-ce pas plutôt vtkFoo ? ;-)

--
Aurélien REGAT-BARREL



Back to top
Mathieu Malaterre
Guest





PostPosted: Wed Jun 23, 2004 5:34 pm    Post subject: Re: Constructeur "par defaut" Reply with quote

Fabien LE LEZ wrote:
Quote:
On Wed, 23 Jun 2004 03:21:53 GMT, Mathieu Malaterre <malat (AT) free (DOT) fr>:


Le probleme c'est que lorsque je l'utilise typiquement en passant
argv[1] (const char*)


Non, char* (du moins si tu parles bien des arguments de main()).


Est-ce qu'un guru c++ sait s'il y a un moyen de force la bete a utiliser
celui que je veux ?


foo mon_fou (std::string (argv[1]));

Ca veut dire qu'un utilisateur de ma classe doit lire la documentation
qui va alors lui indiquer qu'il ne peut pas passer des const char*, mais
qu'il doit faire lui meme les cast explicit.

J'ai beau rajouter un explicit devans la declaration de la classe, g++
s'en moque et me cast mon char* (ou const char*) en bool sans me prevenir...

Merci
Mathieu


Back to top
Mathieu Malaterre
Guest





PostPosted: Wed Jun 23, 2004 5:35 pm    Post subject: Re: Constructeur "par defaut" Reply with quote

Jean-Marc Bourguet wrote:
Quote:
Mathieu Malaterre <malat (AT) free (DOT) fr> writes:


class foo{
public:
foo(bool b);
foo(std::string const &s);
};

Le probleme c'est que lorsque je l'utilise typiquement en passant argv[1]
(const char*), c++ definit comme comportement par defaut de prendre
l'operation la plus simple. Dans mon cas il va caster mon const char* en
bool plutot que de demander le constructeur de string.

Est-ce qu'un guru c++ sait s'il y a un moyen de force la bete a utiliser
celui que je veux ?


Ajouter le constructeur
foo(char const*);
naturellement.

J'ai une douzaine de classes comme j'ai pas envie de rajouter un 'patch'
bizarre comme ca.

Mathieu


Back to top
Mathieu Malaterre
Guest





PostPosted: Wed Jun 23, 2004 5:36 pm    Post subject: Re: [HS] Constructeur "par defaut" Reply with quote

Aurélien REGAT-BARREL wrote:
Quote:
Voila mon probleme j'ai une classe:

class foo{
public:
foo(bool b);
foo(std::string const &s);
};



Ne serait-ce pas plutôt vtkFoo ? Wink

Ben non :p c'est sur mon temps libre, je dev sur la lib gdcm:

http://creatis-www.insa-lyon.fr/Public/Gdcm/

Mathieu


Back to top
Franck Branjonneau
Guest





PostPosted: Wed Jun 23, 2004 6:19 pm    Post subject: Re: Constructeur "par defaut" Reply with quote

Mathieu Malaterre <mmalater (AT) nycap (DOT) rr.com> écrivait:

Quote:
Jean-Marc Bourguet wrote:
Mathieu Malaterre <malat (AT) free (DOT) fr> writes:

class foo{
public:
foo(bool b);
foo(std::string const &s);
};

Le probleme c'est que lorsque je l'utilise typiquement en passant argv[1]
(const char*), c++ definit comme comportement par defaut de prendre
l'operation la plus simple. Dans mon cas il va caster mon const char* en
bool plutot que de demander le constructeur de string.

Est-ce qu'un guru c++ sait s'il y a un moyen de force la bete a utiliser
celui que je veux ?
Ajouter le constructeur
foo(char const*);
naturellement.

J'ai une douzaine de classes comme j'ai pas envie de rajouter un
'patch' bizarre comme ca.

Alors enlever

foo(std::string const &)

et ajouter

template< typename InputIterator >
foo(InputIterator first, InputIterator last)
--
Franck Branjonneau <fasbjx (AT) free (DOT) fr>

Back to top
James Kanze
Guest





PostPosted: Wed Jun 23, 2004 9:33 pm    Post subject: Re: Constructeur "par defaut" Reply with quote

Fabien LE LEZ <gramster (AT) gramster (DOT) com> writes:

Quote:
On 23 Jun 2004 08:19:15 +0200, Jean-Marc Bourguet <jm (AT) bourguet (DOT) org>:

Au fait, est-ce que ceci est considéré comme un cast, au même
titre que static_cast<std::string>(argv[1]) ?

Ca fait la meme operation

Je sais. Ma question n'est qu'une question de vocabulaire : peut-on
appeler ça un "cast" ?

La norme le fait.

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34

Back to top
James Kanze
Guest





PostPosted: Wed Jun 23, 2004 9:34 pm    Post subject: Re: Constructeur "par defaut" Reply with quote

Mathieu Malaterre <mmalater (AT) nycap (DOT) rr.com> writes:

Quote:
J'ai une douzaine de classes comme j'ai pas envie de rajouter un
'patch' bizarre comme ca.

Dire ce que tu veux, c'est un « patch bizarre » ?

--
James Kanze
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France +33 (0)1 30 23 00 34

Back to top
Mathieu Malaterre
Guest





PostPosted: Thu Jun 24, 2004 2:25 am    Post subject: Re: Constructeur "par defaut" Reply with quote

Jean-Marc Bourguet wrote:
Quote:
Mathieu Malaterre <malat (AT) free (DOT) fr> writes:


class foo{
public:
foo(bool b);
foo(std::string const &s);
};

Le probleme c'est que lorsque je l'utilise typiquement en passant argv[1]
(const char*), c++ definit comme comportement par defaut de prendre
l'operation la plus simple. Dans mon cas il va caster mon const char* en
bool plutot que de demander le constructeur de string.

Est-ce qu'un guru c++ sait s'il y a un moyen de force la bete a utiliser
celui que je veux ?


Ajouter le constructeur
foo(char const*);
naturellement.

Ok, j'avais tord, desole. C'est la solution la plus simple et la plus
durable.

Merci de la suggestion
Mathieu

Back to top
Fabien LE LEZ
Guest





PostPosted: Thu Jun 24, 2004 7:04 am    Post subject: Re: Constructeur "par defaut" Reply with quote

On Wed, 23 Jun 2004 17:34:01 GMT, Mathieu Malaterre
<mmalater (AT) nycap (DOT) rr.com>:

Quote:
J'ai beau rajouter un explicit devans la declaration de la classe, g++
s'en moque et me cast mon char* (ou const char*) en bool sans me prevenir...

Comme il a été dit ailleurs, faire un constructeur qui accepte un
"char const*" résoud ton problème.


--
schtroumpf schtroumpf

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.