4

我有一个处理两种类型的函数:NVectorNMatrix; 前者是从后者衍生而来的。这个函数基本上是一个专门的拷贝构造函数。我希望它返回与调用它的对象类型相同的对象,因此,NVector返回NVector,而不是NMatrix

static VALUE nm_init_modifiedcopy(VALUE self) {
  // ... some code ...

  // formerly, I had cNMatrix where klass is. But it could also be cNVector!
  return Data_Wrap_Struct(klass, mark_func, delete_func, unwrapped_self_copy);
}

如何获取要传递的对象的类属性Data_Wrap_Struct

4

1 回答 1

3

就像发条一样,只要我在 Stackoverflow 上提出问题,我就会找到答案。

宏是CLASS_OF

static VALUE nm_init_modifiedcopy(VALUE self) {
  // ... some code ...

  return Data_Wrap_Struct(CLASS_OF(self), mark_func, delete_func, unwrapped_self_copy);
}
于 2012-08-28T23:23:16.500 回答