Disons que j'ai une classe:Comment éviter d'appeler explicitement un constructeur lors du passage d'un objet temporaire par référence en C++?
class String
{
public:
String(char *str);
};
Et deux fonctions:
void DoSomethingByVal(String Str);
void DoSomethingByRef(String &Str);
Si je l'appelle DoSomethingByVal comme ceci:
DoSomethingByVal("My string");
le compilateur chiffres que devrait créer un objet String temporaire et appelle le constructeur char *.
Cependant, si j'essaie d'utiliser DoSomethingByRef de la même manière, j'obtiens un message d'erreur "Impossible de convertir le paramètre from 'char *' en 'String &'".
Au lieu de cela, je dois créer explicitement une instance:
DoSomethingByRef(String("My string"));
qui peut obtenir preety ennuyeux.
Est-il possible d'éviter cela?
Merci. Ça fait l'affaire :) –