SWIGは、渡されたuserdataオブジェクトのデータ型の文字列表現を取得するためのswig_type()関数を丁寧に提供します。ただし、メンバーフィールドの場合、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関数が数値フィールドの正しい文字列表現を持っていることがわかります。
助けてくれてありがとう!