我有以下代码:
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)
在类外定义运算符的正确语法是什么?