【发布时间】:2009-10-01 15:46:00
【问题描述】:
SWIG 慷慨地提供了 swig_type() 函数来获取传递的 userdata 对象的数据类型的字符串表示形式。但是,对于成员字段,SWIG 和 Lua 将它们视为简单的“数字”项,因此仅打印“数字”而不是数据类型的名称。
例如
typedef num_years int;
class Person
{
public:
Person * spouse;
num_years age;
};
在 C++ 中会导致:
Lua 5.1.4 Copyright (C) 1994-2008 Lua.org, PUC-Rio
> p = MyModule.Person();
> print(swig_type(p.spouse));
Person *
> print(swig_type(p.age));
number
我可以采取一些后门途径来确定成员字段的数据类型吗?我看到 get 和 set 函数在验证参数时具有正确的数字字段字符串表示形式。
感谢您的帮助!
【问题讨论】:
-
你期望输出什么而不是“数字”——你期望“年龄”吗?
-
我正在尝试获取数据类型,即“num_years”或“num_years *”。我已经可以得到变量名了。