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::string
mit einem const char*
Argument erwartet . Der Compiler generiert automatisch Code, um den entsprechenden std::string
Konstruktor 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?