无法确定正确的返回类型

时间:2017-10-10 14:24:49

标签: c++ class inheritance auto

我有以下简化文件和类:

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

因为我声明了函数&#34; getMinMaxValue&#34;进入基类Stat如果我使用自动返回类型我得到一个错误:

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

但是我无法删除自动返回类型并找到正确的语法来指定方法的返回类型&#34; getMinMaxValue&#34;

如果我阅读有关cppreference的文档,我发现它必须是一对迭代器但是如何?

1 个答案:

答案 0 :(得分:0)

我回应自己,似乎我找到了解决方案:

Stat.h:

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