簡體   English   中英

在C ++中返回結構的向量時,沒有用於調用[class]的匹配函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM