Question

C ++ a une fonctionnalité (je ne peux pas comprendre le nom propre), qui appelle automatiquement les constructeurs correspondants des types de paramètres si les types d'argument ne sont pas ceux attendus.

Un exemple très basique de ceci est d'appeler une fonction qui s'attend à un std::string avec un const char* dispute. Le compilateur générera automatiquement du code pour invoquer le std::string constructeur.

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);

Est-ce que c'est bien? Ou ça va trop loin? Si je ne devrais pas le faire, puis-je en quelque sorte faire en sorte que Clang ou GCC en avertissent?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
scroll top