C ++ a une fonctionnalité (je ne peux pas en trouver le nom correct), qui appelle automatiquement les constructeurs correspondants des types de paramètres si les types d'arguments ne sont pas ceux attendus.
Un exemple très basique de ceci appelle une fonction qui attend un std::string
avec un const char*
argument. Le compilateur générera automatiquement du code pour appeler le std::string
constructeur approprié .
Je me demande, est-ce aussi mauvais pour la lisibilité que je le pense?
Voici un exemple:
class Texture {
public:
Texture(const std::string& imageFile);
};
class Renderer {
public:
void Draw(const Texture& texture);
};
Renderer renderer;
std::string path = "foo.png";
renderer.Draw(path);
C'est bien? Ou va-t-il trop loin? Si je ne devais pas le faire, puis-je faire en sorte que Clang ou GCC en avertisse?