有没有办法重载>
(大于)运算符,以便能够执行以下操作:
myClass *a = new myClass(1);
myClass *b = new myClass(3);
if(a > b) //it should compare the int values from the constructors
//do something
我尝试过重载运算符,但遇到了各种错误。我正在使用 VC++。
有没有办法重载>
(大于)运算符,以便能够执行以下操作:
myClass *a = new myClass(1);
myClass *b = new myClass(3);
if(a > b) //it should compare the int values from the constructors
//do something
我尝试过重载运算符,但遇到了各种错误。我正在使用 VC++。
您不能为指针重载运算符,因为它们是原始类型(并且您不能创建两个参数都是原始类型的重载);相反,您可以为用户定义类型的对象重载运算符(而不是指向它们的指针):
class myClass
{
// ...
public:
bool operator>(const myClass & right) const
{
return this->whatever()>right.whatever();
}
};
myClass *a = new myClass(1);
myClass *b = new myClass(3);
if(*a > *b) //it should compare the int values from the constructors
//do something
请注意,如果您没有特别的理由在堆上分配东西,最好只在堆栈上分配它:
myClass a(1);
myClass b(3);
if(a > b)
// do something
尝试
class MyClass
{
int value;
public:
bool operator>(MyClass const& rhs) const
{
return value > rhs.value;
}
MyClass(int v):value(v){}
};
int main()
{
MyClass a(1);
MyClass b(3);
if (a > b) { PLOP } else { POOP }
}