C++11下如何在结构体中将模板参数值转换为QString字符串
问题:Qt开发中C++模板结构体实现值转字符串的编译问题
我在Qt开发过程中需要将模板参数类型的值转换为QString,编写了如下C++结构体代码:
template <class T> struct MyStruct { QString name; T value; QString get_value() { if (std::is_same<T, int>::value) return QString::number(value); if (std::is_same<T, double>::value) return QString::number(value,'f',8); if (std::is_same<T, QString>::value) return value; } }
上述代码无法正常编译,我已经了解了编译失败的原因,但尚未找到可行的解决方法,请问有什么方案可以实现该需求?
更新说明
我当前使用的是C++11标准,无法使用if constexpr语法,最终我通过std::enable_if实现了需求,可运行代码如下:
template <class T> struct MyStruct { QString name; T value; template<typename Q = T, typename std::enable_if<std::is_same<Q, double>::value>::type* = nullptr> QString value_to_string() { return QString::number(value,'f',8); } template<typename Q = T, typename std::enable_if<std::is_same<Q, int>::value>::type* = nullptr> QString value_to_string() { return QString::number(value); } template<typename Q = T, typename std::enable_if<std::is_same<Q, QString>::value>::type* = nullptr> QString value_to_string() { return value; } };
内容的提问来源于stack exchange,提问作者Fred
相关产品推荐
相关产品推荐

