C ++ hat eine Funktion (ich kann den richtigen Namen nicht herausfinden), die automatisch übereinstimmende Konstruktoren von Parametertypen aufruft, wenn die Argumenttypen nicht die erwarteten sind.
Ein sehr einfaches Beispiel hierfür ist das Aufrufen einer Funktion, die a std::stringmit einem const char*Argument erwartet . Der Compiler generiert automatisch Code, um den entsprechenden std::stringKonstruktor aufzurufen .
Ich frage mich, ist es so schlecht für die Lesbarkeit, wie ich denke?
Hier ist ein Beispiel:
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);
Ist das in Ordnung? Oder geht es zu weit? Wenn ich es nicht tun sollte, kann ich Clang oder GCC irgendwie davor warnen lassen?