我想写一个通用的模板方法,计算一些东西,最后返回值typename T
。该值来自QString,所以我需要将QString转换为指定的typename T
。不幸的是我只能找到toDouble()
,toInt()
......方法。如何使用模板将QString转换为typename?
我需要的是:
QString s = 3.1415;
double d = s.toType<double>();
float f = s.toType<float>();
int i = s.toType<int>();
我不想叫toDouble()
,toInt()
,......因为我不能在编译时选择它们。
谢谢!
编辑:我可以写做的正是这个我自己专门的模板函数。所以
double myOwnConvertFunction<double>(const QString& s)
会那么简单地调用s.toDouble()
我认为Qt的可能已经有一个内置的方式吗?
QVariant(s).value()可以在这里工作。 –
听起来不错,但这是否会影响性能? QString在之前被转换为QVariant,对吗? – FrozenTarzan
afaik qvariant类可以将字符串的dptr直接存储在本地并与之共享,从而避免进一步堆分配成本。你可以检查源代码是绝对肯定的。 –