如何在Ruby扩展C ++中获取确切的对象类型?

时间:2011-10-18 12:43:41

标签: c++ ruby

您好。我正在开发一个Ruby C ++扩展,我有以下函数,其中“self”对象是结构类型或Exception类型。

VALUE myFunction(VALUE self, VALUE args)
{
  // Some functon call and process on args argument
}

现在在上面的函数中我需要知道对象“self”的确切类型(即rb_eException或rb_cStruct), 我尝试使用以下API,

if(Qtrue == rb_obj_is_kind_of(self, rb_eException))
{
   std::cout<<"self is of rb_eException type "<<std::endl;
}

就像上面的rb_cStruct,rb_cClass等一样,但我只获得了“rb_cClass”类型的Qtrue。 如何获得“self”对象的确切类型(即rb_cStruct或rb_eException)? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用rb_obj_class获取适当的VALUE