我遇到了模板問題,我想獲取文件的內容並將其存儲在字符串中。我正在使用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