O C ++ possui um recurso (não consigo descobrir o nome apropriado), que chama automaticamente os construtores correspondentes dos tipos de parâmetros se os tipos de argumento não forem os esperados.
Um exemplo muito básico disso é chamar uma função que espera a std::string
com um const char*
argumento. O compilador irá gerar código automaticamente para chamar o std::string
construtor apropriado .
Gostaria de saber, é tão ruim para a legibilidade como eu acho que é?
Aqui está um exemplo:
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);
Tudo bem? Ou vai longe demais? Se não devo fazê-lo, posso de alguma forma fazer Clang ou GCC avisar sobre isso?