嵌套模板类的Friend函数

时间:2018-11-06 16:03:53

标签: c++ templates friend-function

我有以下代码:

class Foo
{
    template <bool T>
    class Bar
    {
        friend bool operator== (const Bar& lhs, const Bar& rhs);
    };
};

我想在类之外编写operator==函数的定义。像下面这样写时,出现链接器错误,提示找不到operator==函数:

template <bool T>
bool operator==(const Foo::Bar<T>& lhs, const Foo::Bar<T>& rhs)
{
    return true;
}

在Visual Studio中,出现以下错误:

  

错误LNK2019无法解析的外部符号“布尔__cdecl   运算符==(struct Foo :: Bar <1> const&,struct Foo :: Bar <1> const&)“   (?? 8 @ YA_NAEBU?$ Bar @ $ 00 @ Foo @@ 0 @ Z)在函数“私人:   虚拟void __cdecl DELETE_ME_delete_me_Test :: TestBody(void)“   (?TestBody @ DELETE_ME_delete_me_Test @@ EEAAXXZ)

在类外定义运算符的正确语法是什么?

0 个答案:

没有答案