4

私は2つのタイプを処理する関数を持っています:NVectorNMatrix; 前者は後者から派生しています。この関数は基本的に特殊なコピーコンストラクターです。呼び出されたのと同じタイプのオブジェクトを返すようにしたいので、ではなく、をNVector返します。NVectorNMatrix

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 に答える