C++ 使用STL实用程序重载运算符

C++ 使用STL实用程序重载运算符,c++,visual-studio-2010,visual-studio,visual-c++,C++,Visual Studio 2010,Visual Studio,Visual C++,在我的代码中,我遇到了37个相同类型的错误c2678;二进制“运算符”:未定义接受“type”类型左侧操作数的运算符(或没有可接受的转换) 我试图通过重载==运算符,包括STL“实用程序”,来消除错误。 http://en.wikibooks.org/wiki/C%2B%2B_Programming/Operators/Operator_Overloading 但这仍然不起作用。非常感谢您的帮助。该标题为某些标准类型提供了运算符==的重载,但不会神奇地为您自己的类型重载。如果希望类型具有相等可比

在我的代码中,我遇到了37个相同类型的错误c2678;二进制“运算符”:未定义接受“type”类型左侧操作数的运算符(或没有可接受的转换)

我试图通过重载==运算符,包括STL“实用程序”,来消除错误。 http://en.wikibooks.org/wiki/C%2B%2B_Programming/Operators/Operator_Overloading


但这仍然不起作用。非常感谢您的帮助。

该标题为某些标准类型提供了
运算符==
的重载,但不会神奇地为您自己的类型重载。如果希望类型具有相等可比性,则必须自己重载运算符,例如:

bool operator==(my_type const & a, my_type const & b) {
    return a.something == b.something
        && a.something_else == b.something_else;
}

// You'll probably want this as well
bool operator!=(my_type const & a, my_type const & b) {
    return !(a == b);
}

包含一个头应该如何重载您的类型的运算符?我们至少需要看到正在中断的代码。@yurikilochek:请参见
@BoBTFish so?包含此标头不会神奇地为运算符提供重载。您必须继承boost::operators,即使这样,您也必须提供基本的操作符,以便其他操作符可以按照它们的术语实现。