2017-10-10 71 views
0

我有以下簡化文件和類:未能確定正確的返回類型

Stat.h:

class Stat 
{ 
    auto getMinMaxValue(std::unordered_map< int, int >&); 
}; 

Stat.cpp:

auto Stat::getMinMaxValue(std::unordered_map< int, int >&m) 
{ 
    return std::minmax_element(m.begin(), m.end(), [](const pair<int, int>& p1, const pair<int, int>& p2) { return p1.second < p2.second; }); 
} 

StatCount.h:

class StatCount : public Stat 
{ 
    void setWeight(std::vector<D> const&, const std::string); 
}; 

StatCount.cpp:

void StatCount::setWeight(vector<D> const& ref, const string type) 
{ 
    auto a = Stat::getMinMaxValue(m_value); 
    cout << "MIN: " << a.first->second << endl; 
    cout << "MAX: " << a.second->second << endl; 
} 

因爲我聲明函數「getMinMaxValue」到基類統計,如果我使用自動返回類型我得到了一個錯誤:

function 'getMinMaxValue' with deduced return type cannot be used before it is defined 

,但我無法刪除自動返回類型,找到正確的語法指定方法「getMinMaxValue」的返回類型

如果我讀cppreference我看到它必須是一對迭代器,但如何的文檔?

+0

這可能會幫助你https://stackoverflow.com/questions/18559452/how-to -return最內容的-stdpair –

+2

可能是https://stackoverflow.com/q/40694607/10077 –

+0

@FredLarson的副本:這是不是重複,我不尋找一個解決方案,以保持「自動」 ,我想找到方法minmax_element – skualito

回答

0

我對自己作出反應,看來我已經找到了解決辦法:

Stat.h:

std::pair<std::unordered_map< int, int >::iterator, std::unordered_map< int, int >::iterator> getMinMaxValue(std::unordered_map< int, int >&);