Der Einfachheit halber möchte ich zwischen zwei in anderen Bibliotheken definierten Typen casten können. (Genauer gesagt, QString
aus der Qt-Bibliothek und UnicodeString
aus der ICU-Bibliothek). Im Moment habe ich Dienstprogrammfunktionen in einem Projektnamensraum erstellt:
namespace MyProject {
const icu_44::UnicodeString ToUnicodeString(const QString& value);
const QString ToQString(const icu_44::UnicodeString& value);
}
Das ist alles schön und gut, aber ich frage mich, ob es einen eleganteren Weg gibt. Im Idealfall würde ich gerne in der Lage sein, zwischen ihnen mit einem Cast-Operator zu konvertieren. Ich möchte jedoch die explizite Natur der Konvertierung beibehalten. Eine implizite Konvertierung sollte nicht möglich sein.
Gibt es eine elegantere Möglichkeit, dies zu erreichen, ohne den Quellcode der Bibliotheken zu ändern? Vielleicht mit einer Syntax für Operatorüberladungen?