I重写operator<<
QTextStream &operator<<(QTextStream &out, const QPair<quint8, qint32>& pair)
{
out << QString("QPair<%1, %2> ").arg(QString::number(pair.first))
.arg(QString::number(pair.second));
return out;
}如何为不同类型的QPair制作此操作的模板
比如: QPair等等。
谢谢!
发布于 2021-05-09 06:22:32
你只需要把你的函数变成一个函数模板,用模板参数替换硬编码的类型,如下所示:
template<class T, class U>
QTextStream& operator<<(QTextStream& out, const QPair<T, U>& pair) {
out << QString("QPair<%1, %2> ")
.arg(QString::number(pair.first))
.arg(QString::number(pair.second));
return out;
}要使模板不仅适用于数字Qt类型,请让这些类型的内置operator<<重载来完成此工作:
template<class T, class U>
QTextStream& operator<<(QTextStream& out, const QPair<T, U>& pair) {
return out << "QPair<" << pair.first << ", " << pair.second << '>';
}https://stackoverflow.com/questions/67452476
复制相似问题