[英]no matching function for call to [class] when returning a vector of structures in c++
在下面指示的行上出現錯誤:當我嘗試返回結構向量時,出現此錯誤。 我使用了一個模板來能夠返回這些向量。 我不是我的錯誤所在。 如果我不使用模板,請將返回類型設置為vector。
Header File:
typedef unsigned long ulong_t;
class Tool {
public:
Tool();
void toolInterface();
void run();
private:
ifstream allDevicesFile;
struct devStats {
//structure variables,
};
template<class devStats>
vector<devStats> readDev();
vector<devStats> stats;
string fileNameAll;
Report report;
Commandline cmd;
Configuration conf;
Devices dev;
};
Tool.cpp:
Tool::Tool() {
fileNameAll = "/proc/diskstats";
allDevicesFile.open((char*)fileNameAll.c_str());
if (allDevicesFile.fail()) {
cout << "Could not open /proc/diskstats\n";
}// TODO Auto-generated constructor stub
}
template<class devStats>
vector<devStats> Tool::readDev() {
devStats dev;
while (!allDevicesFile.eof()) {
allDevicesFile >> dev.decoy1;
allDevicesFile >> dev.decoy2;
allDevicesFile >> dev.devName;
allDevicesFile >> dev.reads;
allDevicesFile >> dev.readMerge;
allDevicesFile >> dev.writes;
allDevicesFile >> dev.secReading;
allDevicesFile >> dev.mSecondsRead;
allDevicesFile >> dev.writeCompleted;
allDevicesFile >> dev.secWritting;
allDevicesFile >> dev.mSecondWrite;
allDevicesFile >> dev.currentI_O;
allDevicesFile >> dev.mSecondsI_O;
allDevicesFile >> dev.weightedI_O;
dev.mSecondsRead = dev.mSecondsRead / 1000;
dev.mSecondWrite = dev.mSecondWrite / 1000;
dev.mSecondsI_O = dev.mSecondsI_O / 1000;
stats.push_back(dev);
}
cout << stats[0].devName;
return stats;
}
void Tool::run() {
stats = readDev(); //error occurs here.
}
普通的重載解決方案不考慮返回類型。 返回類型與任何內容都不匹配。 因此,無法自動解析template參數。
作為實際的解決方案,只需刪除模板。
在特殊情況下,調用上下文可以解析僅用作返回類型的模板參數,該參數用於轉換運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.