如何以标准 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*View控件中,这意味着仅重载operator<<可能是不够的。
public virtual
。 - Peter McG