Domanda

C ++ ha una funzione (non riesco a capire il suo nome corretto), che chiama automaticamente i costruttori di corrispondenza dei tipi di parametri se i tipi di argomentazioni non sono quelli previsti.

Un esempio molto semplice di questo è chiamare una funzione che si aspetta a std::string con un const char* discussione. Il compilatore genererà automaticamente il codice per invocare l'appropriato std::string costruttore.

Mi chiedo, è male per la leggibilità come penso?

Ecco un esempio:

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

Va bene? O va troppo lontano? Se non dovrei farlo, posso in qualche modo far avvertire Clang o GCC?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
scroll top