我有以下结构:
typedef struct{
int a;
int (*init)(void);
} tObj;
我将它包装到Ruby中的对象'ObjExt'中。 Ruby初始化方法得到一个Proc'cb',它应该随时运行'init'函数在某处调用以生成一个整数。
类似的东西:
cb = Proc.new { 1 }
ruby_obj = ObjExt.new(cb)
我的第一个镜头是我将'cb'proc传递给全局VALUE类型变量并在我定义的包装函数“int(* wrapper)(void)”中运行rb_funcall,并且字面上指定了init =包装。但是如果我有多个ObjExt类的对象实例,那么这将不起作用,因为全局变量在实例之间共享,并在初始化第二个和第三个对象时被覆盖。
任何提示都将不胜感激。我可能以错误的方式解决问题。