Hi,
folgende Situation:
#include <qstring.h>
// Eine Klasse für IDs. Zur Zeit sind die IDs als QString // implementiert. Das kann sich in Zukunft ändern. // Aber ich will _immer_ die Möglichkeit anbieten, eine ID // (zu Debug-Zwecken) in einen QString zu konvertieren. class ID : private QString { };
int main() { ID id; QString s;
s = id; // Dat geht nicht. Weil QString private ist in // ID. // Typconvertierungs-Operator in ID (nach QString) // hilft auch nicht: er wird nicht genutzt, sagt der // Compiler (type conversation operator for cast // to base class not used)
qDebug("%s", s.latin1()); // sollte den QString in const char* // konvertieren und dann ausgeben. // latin1() ist eine (public) // Memberfunktion von QString.
}
Watt nu? Ich könnte sicher erst von QString eine public Ableitung machen, in der dann einen Typeconversation-Konstruktor definieren und diesen zum Freund von ID machen, aber das kommt mir krank vor.
Ich hab auch versucht, QString zum Freund von ID zu machen, aber auch das ist ja eigentlich Quatsch und hilft nicht, denn es wird ja keine Funktion von QString aufgerufen, wenn ich s = id habe. Besser -- es wird schon eine Funktion von QString aufgerufen:
s.operator=(QString(id));
???
Irgendwelche Idee, außer daß es nix mit Linux zu tun hat? (Trotzdem: ich bearbeite dieses Problem unter Linux ;-)
Best regards from currently Schwerin/Germany Viele Gruesse aus Schwerin/Mecklenburg-Vorpommern Heiko Schlittermann