我想知道是否可以在QString
和std::string
之间创建自动转换,以便我可以这样写:
QString a, b;
std::string c, d;
a = c;
d = b;
并且a = c;
和d = b;
按预期工作。
我认为这对模板来说是可行的,但看起来我发现的所有示例都只适用于二元运算符。
仅供参考,我已经有了实施的代码。我真正感兴趣的是让赋值(=
)运算符起作用。因为写下面的内容很烦人,许多人倾向于忘记并跳过使用正确的转换:
a = QString::fromUt8(c.toUtf8());
d = b.toUtf8().data();
答案 0 :(得分:1)
赋值运算符必须实现为成员函数(参见例如here),因此
QString a, b;
std::string c, d;
a = c;
d = b;
不起作用。相反,你可能想要考虑一个自由函数,就像
那样assignStrings(a,c); // or perhaps... a = toQString(c);