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]"とだけ書く事が出来ます。