内联运算符!=未定义的引用

时间:2016-03-14 20:06:36

标签: c++

尝试将undefined reference to内联为友元函数时,我收到编译器错误operator!=

以下是一个例子:

// color.hpp
class Color
{
    friend bool operator==(const Color& lhs, const Color& rhs);
    inline friend bool operator!=(const Color& lhs, const Color& rhs);
};

// color.cpp
bool operator==(const Color& lhs, const Color& rhs)
{
}

inline bool operator!=(const Color& lhs, const Color& rhs)
{
}

我无法在头文件中实现运算符,因为这会产生多个定义错误。

我正在使用--std=c++11编译,g ++ 5.2。

1 个答案:

答案 0 :(得分:0)

从类定义中删除inline

在类定义之后,在头文件中添加以下内容:

inline bool
operator!=(const Color& lhs, const Color& rhs)
{
  return !(lhs == rhs);
}

删除源文件中的定义。