2017-10-10 6 views
0

je les fichiers simplifiés et les classes suivantes:n'a pas réussi à déterminer le type de retour correct

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; 
} 

Depuis que je déclare la fonction « getMinMaxValue » dans la classe de base Stat si j'utilise le type de retour automatique i eu une erreur:

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

mais je n'arrivais pas à supprimer le type de retour automatique et trouver la syntaxe correcte pour spécifier le type de retour de la méthode "getMinMaxValue"

si je lis la documentation sur cppreference je vois que ça doit être une paire d'itérateur mais comment?

+0

Cela peut vous aider à https://stackoverflow.com/questions/18559452/how-to -return-the-content-of-stdpair –

+2

Peut-être un doublon de https://stackoverflow.com/q/40694607/10077 –

+0

@FredLarson: ce n'est pas un doublon, je ne recherche pas une solution pour garder le "auto" , je veux trouver la déclaration correcte du type de retour de la méthode minmax_element – skualito

Répondre

0

je réponds à moi-même, Il semble que je l'ai trouvé la solution:

stat.h:

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