Каков наилучший способ заставить все из приведенного ниже кода работать стандартным способом C ++ / Qt?
class A {
public:
A() { }
virtual ~A() { }
virtual QString toString() { return "A"; }
};
class B: A {
public:
B() { }
~B() { }
QString toString() { return "B"; }
};
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
A a_;
B b_;
// qDebug() << a_; // I can make this work by overloading << yes?
// qDebug() << b_;
// QString x = a_; // How do I make this work?
// QString y = b_;
QString s = a_.toString(); // What I'm doing at present
qDebug() << b_.toString(); // What I'm doing at present
return a.exec();
}
У меня есть иерархия экземпляров моих собственных классов Qt, которые все происходят из одного базового класса. Я хотел бы превратить их в строки неявным образом стандартным способом для отображения в Qt ui:
Я могу сделать это сам, как указано выше, с помощью моего собственного стандартного метода, такого как toString
выше, но он не является неявным, и я предпочел бы следовать соглашению Qt или C ++, так как считаю, что есть один, о котором я не знаю.
Строки будут в конечном итоге отображаться в Q * Просмотр элементов управления, что, я считаю, означает, что перегрузка operator <<
сама по себе будет недостаточной.