оператор <дает оператору ошибку __surrogate_func - PullRequest
3 голосов
/ 17 апреля 2019

Я реализовал operator< для своих классов C ++ и когда я попробовал это для класса, который содержит объектный вектор;он терпит неудачу и дает оператор __surrogate_func

Когда я удаляю объектный вектор из класса, все в порядке.Я нашел этот похожий вопрос о вопросе, но я не знаю, почему я получаю эту ошибку?Потому что я просто сравниваю вектор. ошибка C2672: 'operator __surrogate_func': не найдена соответствующая перегруженная функция при использовании std :: upper_bound

class A
{
public:
A() {}

inline int getAVal() { return m_a; }
inline int getBVal() { return m_b; }

inline void setAVal(int a) { m_a = a; }
inline void setBVal(int b) { m_b = b; }

inline bool operator<(const A& r)
{
    return std::tie(m_a, m_b) < std::tie(r.m_a, r.m_b);
}

private:
int m_a;
int m_b;
};

class B
{
B() {}

inline bool operator<(const B& r)
{
    return std::tie(m_aVec) < std::tie(r.m_aVec);
}

private:
std::vector<A> m_aVec;
};
...