使用 STL utility.h 重载运算符
Posted
技术标签:
【中文标题】使用 STL utility.h 重载运算符【英文标题】:Overloading operator by using STL utility.h 【发布时间】:2012-07-27 12:40:03 【问题描述】:在我的代码中,我遇到了 37 个相同类型的错误 c2678; binary 'operator' : 没有定义接受 'type' 类型左侧操作数的运算符(或者没有可接受的转换)
我试图通过重载 == 运算符,包括 STL“实用程序”来消除错误。 http://msdn.microsoft.com/en-us/library/86s69hwc(v=vs.80).aspx http://en.wikibooks.org/wiki/C%2B%2B_Programming/Operators/Operator_Overloading
但这仍然不起作用。任何帮助表示赞赏。
【问题讨论】:
如何包含标头应该为您的类型重载运算符? 我们至少需要看到正在破坏的代码。 @yurikilochek:见<boost/operators.hpp>
。
@BoBTFish 这样吗?包含此标头不会神奇地为您的操作员提供重载。你必须从 boost::operators该标头为某些标准类型提供了operator==
的重载,但它不会为您自己的类型神奇地重载它。如果您希望您的类型是相等可比的,那么您必须自己重载运算符,例如:
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);
【讨论】:
以上是关于使用 STL utility.h 重载运算符的主要内容,如果未能解决你的问题,请参考以下文章
C ++ STL列表运算符重载对(根据第一个值排序,使用第二个值访问)