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 ?
|> On 23 Jun 2004 08:19:15 +0200, Jean-Marc Bourguet :
|> >> 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
Fabien LE LEZ <gramster@gramster.com> writes:
|> On 23 Jun 2004 08:19:15 +0200, Jean-Marc Bourguet <jm@bourguet.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
|> On 23 Jun 2004 08:19:15 +0200, Jean-Marc Bourguet :
|> >> 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
James Kanze
Mathieu Malaterre writes:
|> 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
Mathieu Malaterre <mmalater@nycap.rr.com> writes:
|> 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
|> 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
Mathieu Malaterre
Jean-Marc Bourguet wrote:
Mathieu Malaterre 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
Jean-Marc Bourguet wrote:
Mathieu Malaterre <malat@free.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.
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
Fabien LE LEZ
On Wed, 23 Jun 2004 17:34:01 GMT, Mathieu Malaterre :
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
On Wed, 23 Jun 2004 17:34:01 GMT, Mathieu Malaterre
<mmalater@nycap.rr.com>:
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.