如何在另一个类中重载运算符==

时间:2019-04-19 15:12:10

标签: c++ templates overloading

我有A类

在模板类B中

gcc -march=bdver2

我想在类B内重载A的==运算符,因为我不想在类外重载

我该怎么做?

我尝试过:

1。

template<class key>
class B

编译结果:参数过多

2。

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

当我尝试使用运算符时,编译结果:找不到运算符

1 个答案:

答案 0 :(得分:3)

您可以为您的密钥类型定义一个嵌套的私有包装器:

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