0

Ogre::Vector2クラスを ChaiScriptに公開しようとしています。クラスのxandを公開したいのですが、フォーラムのこの投稿に従って、他の関数と同じように追加するだけでよいようです。しかし、それは私にはうまくいかず、次のエラーメッセージが表示されます。y

「関数 'x' の関数ディスパッチでエラーが発生しました」 パラメータ付き: (const class Ogre::Vector2).()

v.x:スクリプト内およびスクリプト内でアクセスしようとしましv.x()た。

モジュールの私の定義は次のようになります。

using namespace chaiscript;
ModulePtr module(new Module());
module->add(user_type<Ogre::Vector2>(), "Ogre::Vector2");
module->add(constructor<Ogre::Vector2()>(), "Ogre::Vector2");
module->add(constructor<Ogre::Vector2(float, float)>(), "Ogre::Vector2");
module->add(constructor<Ogre::Vector2(float)>(), "Ogre::Vector2");
module->add(constructor<Ogre::Vector2(const Ogre::Vector2&)>(), "Ogre::Vector2");
module->add(fun(&Ogre::Vector2::x), "x");
module->add(fun(&Ogre::Vector2::y), "y");
module->add(fun<Ogre::Vector2& (Ogre::Vector2::*)(const Ogre::Vector2&)>(&Ogre::Vector2::operator =), "=");
module->add(fun<Ogre::Vector2 (Ogre::Vector2::*)(const Ogre::Vector2&) const>(&Ogre::Vector2::operator+), "+");
module->add(fun<Ogre::Vector2 (Ogre::Vector2::*)(const Ogre::Vector2&) const>(&Ogre::Vector2::operator-), "-");
module->add(fun<Ogre::Vector2 (Ogre::Vector2::*)(const Ogre::Vector2&) const>(&Ogre::Vector2::operator*), "*");
module->add(fun<Ogre::Vector2 (Ogre::Vector2::*)(const float) const>(&Ogre::Vector2::operator*), "*");
module->add(fun<Ogre::Vector2 (Ogre::Vector2::*)(const Ogre::Vector2&) const>(&Ogre::Vector2::operator/), "/");
module->add(fun<Ogre::Vector2 (Ogre::Vector2::*)(const float) const>(&Ogre::Vector2::operator/), "/");

私は最初にクラスヘルパーマクロを介してこのクラスを定義しようとしましたが、このエラーが発生したため、このモジュールを手動で定義しました。彼らのフォーラムでは新しいトピックの作成と新しい投稿が無効になっているため (スパマーよ、DARN!)、この質問をここに投稿します。この問題を解決するための助けをいただければ幸いです。

注2: ChaiScript -4.2.0を使用しています

4

0 に答える 0