>
(より大きい)演算子をオーバーロードして、次のようなことができるようにする方法はありますか?
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 }
}