16
class MyClass;

int main()
{
  float a = 5;
  MyClass c1;
  MyClass c2 = a*c1;
  MyClass c3 = c1*a;
}

a*c1 と c1*a の両方が機能するように乗算演算子をオーバーロードするにはどうすればよいですか?

4

1 に答える 1

30

そのようです:

MyClass operator* (float x, const MyClass& y)
{
    //...
}

MyClass operator* (const MyClass& y, float x)
{
    //...
}

2 つ目はメンバー関数にすることもできます。

class MyClass
{
    //...
    MyClass operator* (float x);
};

最初の 2 つのオプションは、クラス スコープ外の宣言として機能します。

于 2012-04-27T17:05:57.017 に答える