SWIG-Lua 关于类返回另一个类的问题
我正在具体阐述我之前的一个问题。
我有两个 C++ 类,我使用 SWIG 来包装它们。一个类中的方法可以返回指向另一个类的指针。我怎样才能让 Lua 将其视为不仅仅是一个用户数据?
更具体地说:
我用
class fruit
{
int numberofseeds;
//some other stuff about fruit constructors etc...
public:
getseedcount()
{
return numberofseeds;
}
}
class tree
{
fruit * apple;
public:
//constructors and whatnot
fruit * getfruit()
{
return apple;
}
}
SWIG 包装了这两个类,这样我就可以在 Lua 中访问它们,
这样我就可以在 Lua 中获取对象x=pomona.tree(grannysmith)。
我现在的问题是:如何安排,以便当我输入 y=x:getfruit() 时,我会得到一个 pomona:fruit 类型对象?我可以在哪里写一些行y:getseedcount()? 目前我得到的只是不可食用的用户数据。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您的 SWIG .i 文件设置正确,您可以使用“:”运算符:
请参阅 SWIG Lua 文档。
如果这不起作用,您需要告诉 SWIG 如何使用 .i 文件中的类型映射将 Fruit* 输出参数转换为 Lua 表示形式。像这样的东西:
If your SWIG .i file is set up correctly, you can use the ":" operator:
See the "Classes" section (23.2.7) of the SWIG Lua documentation.
If that doesn't work you need to tell SWIG how to convert a fruit* out parameter to a Lua representation using a typemap in your .i file. Something like: