tolua++ - Reference Manual 翻訳 (Overloaded operators)

tolua++ - Reference Manualの章をOverloaded operators(演算子オーバーロード)を日本語訳しました。
翻訳ミスを見つけた場合はご一報いただけると助かります。

演算子オーバーロード

toluaは以下の算術演算子を自動でバインドする事が出来ます。

operator+   operator-   operator*   operator/
operator<   operator>=  operator==  operator[]

関係演算子に関しても、toLuaは自動で戻り値の0をnilに変換する為、C言語のfalseはLuaのfalseとなります。

例えば、上記のコードで仮定すると

Point add (Point& other);              // add points, returning another one

の代わりに

Point operator+ (Point& other);        // add points, returning another one

を持っています。

この場合、Luaではシンプルに

p3 = p1 + p2

と記述することができる筈です。


添字演算子演算子[])もまた、数値のパラメータを受け取った際にLuaへエクスポートすることができます。その場合、toluaは戻り値の参照を基本の形でも受け入れます。Luaから参照が返ってきた場合、プログラマーは数値を取得あるいは設定できます。戻り値が参照ではなかった場合、プログラマーは数値を取得することだけが可能です。Vectorクラスで以下の演算子をバインドすると仮定した場合の例がわかりやすいでしょう。

double& operator[] (int index);

この場合、Luaでは"value = myVector[i]"や、C++オブジェクトをアップデートする"myVector[i] = value"とも書くことができます。
しかし、もし結合演算子

double operator[] (int index);

だった場合、"value = myVector[i]"とだけ書く事が出来ます。

自由な関数(すなわち、クラスのメンバではない物)の演算子オーバーロードは非対応です。