C++ 类的重载运算符不会被调用
Posted
技术标签:
【中文标题】C++ 类的重载运算符不会被调用【英文标题】:Overloaded operator for C++ class doesn't get called 【发布时间】:2013-10-26 19:26:19 【问题描述】:在我的课堂上,我将原型(公共)写为:
bool operator< (const MyClass& obj);
我在类外(在同一个文件中)实现方法:
bool MyClass::operator< (const MyClass& obj)
cout << "operator< used" << endl;
//do my work
问题是,虽然我的重载运算符会在我显式调用(如obj1->operator<(*obj2)
)时被调用,但在隐式调用时不会被调用(如obj1 < obj2
)。
我遵循了来自 this article 的重载教程,但我看不出我遗漏了什么或做错了什么。
【问题讨论】:
【参考方案1】:obj1
和 obj2
是指针,所以你可以使用 *obj1 < *obj2
。
【讨论】:
我也希望它是免费的。【参考方案2】:obj1 和 obj2 是指向 MyClass 的指针。 如果你想调用 operator
【讨论】:
以上是关于C++ 类的重载运算符不会被调用的主要内容,如果未能解决你的问题,请参考以下文章