我可以使用模板在QString和std :: string之间进行自动转换吗?

时间:2018-03-05 18:47:12

标签: c++ templates type-conversion implicit-conversion

我想知道是否可以在QStringstd::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();

1 个答案:

答案 0 :(得分:1)

赋值运算符必须实现为成员函数(参见例如here),因此

QString a, b;
std::string c, d;

a = c;
d = b;

不起作用。相反,你可能想要考虑一个自由函数,就像

那样
assignStrings(a,c); // or perhaps... a = toQString(c);