Как перегрузить оператор == внутри другого класса - PullRequest
1 голос
/ 19 апреля 2019

У меня есть класс A

В шаблонном классе B

template<class key>
class B

Я хочу перегрузить оператор == A внутри класса B, потому что он мне не нуженбыть перегруженным вне класса

как я могу это сделать?

Я пытался:

1.

bool operator==(const key &a, const key &b)

Результат компиляции: слишком много аргументов

2.

friend operator==(const key &a, const key &b)

, когда я пытался использовать оператор, результат компиляции: не могу найти оператор

1 Ответ

3 голосов
/ 19 апреля 2019

Вы можете определить вложенную личную оболочку для своего типа ключа:

template<class key>
class B
{
    struct EKey {
        key k;
        friend bool operator==(const EKey&, const EKey&) { return false; }
    };
    // ...
};

Полная демонстрация: http://coliru.stacked -crooked.com / a / 2fd8e570f2b12a3e

...