我遇到了模板问题,我想获取文件的内容并将其存储在字符串中。我正在使用Qt来处理char *,QString和字符串。模板函数C++,采用参数U并返回T
我有一个模板,我与拨打:
std::string test = openStyle("style.css");
我想在测试值styleToAdd,这是我的文件的style.css的内容来获得:
编辑:更改常量T & openstyle to const T,感谢球场。
template<typename T>
const T openStyle(const T &type)
{
QFile File(QCoreApplication::applicationDirPath() + "/" + type);
File.open(QFile::ReadOnly);
QString styleToAdd = QLatin1String(File.readAll());
return (styleToAdd);
}
但编译说:
invalid initialisation of reference type "const char (&)[14]" from expression "QString"
我认为这是因为在模板,返回值是一样的参数,而不是我测试变量,但有没有办法能够返回另一个类型(在通用的方式)
,所以我们可以做这样的事情与模板:
std::string test = openStyle("style.css");
char * test = openStyle("style.css");
QString test = openStyle("style.css");
const char * test = openStyle("style.css");
你为什么在以下情况下需要使用模板函数:它的参数是一个文件名,它总是一个字符串;你总是希望它返回一个字符串。这里不需要模板功能。正如俗话所说:“你越想过管道,就越容易堵塞排水沟。” –
如果您可以使用C++ 14,请尝试使用自动返回类型演绎。 – chrizke