我正在尝试将Ogre::Vector2
类公开给ChaiScript。我希望公开类的x
和y
以及as-per this post on their forum,看起来您只需要像任何其他函数一样添加它。但这对我不起作用,它给了我以下错误信息:
“函数'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/), "/");
我最初尝试通过他们的class helper macro定义这个类,然后手动定义了这个模块,遇到了这个错误。由于他们的论坛已禁用新主题创作和新帖子(DARN you,spammers!),我在这里发布此问题。我们非常感谢您解决此问题的任何帮助。
NOTE2 :我正在使用ChaiScript-4.2.0