Visual C++のWinRT拡張のref classにおいて演算子多重定義をやってみました。

C++/CLIのようにC++方式(非静的メンバ関数または自由関数)とCLI方式(静的メンバ関数)のどちらでもコンパイルできました。

1
2
3
4
5
6
7
8
9
10
11
12
13
ref class Hoge
{
public:
  Hoge^ operator +(Hoge^) {return ref new Hoge();}
  static Hoge^ operator -(Hoge^, Hoge^) {return ref new Hoge();}
};
 
Hoge^ operator *(Hoge^, Hoge^) {return ref new Hoge();}
 
auto x = ref new Hoge();
auto y = x + x;
auto z = x - y;
auto w = x * y;

他言語から用いる場合にどうなるのかは試せていません。C++/CLIのように静的メンバ関数で定義しないといけないという可能性が高いと思っています。

スポンサード リンク

この記事のカテゴリ

  • ⇒ WinRTのref classでの演算子多重定義
  • ⇒ WinRTのref classでの演算子多重定義
  • ⇒ WinRTのref classでの演算子多重定義