2012-08-28 48 views
4

我有一個處理兩種類型的函數:NVectorNMatrix;前者來源於後者。這個函數基本上是一個專門的拷貝構造函數。我希望它返回與它被調用的對象類型相同的對象,因此,NVector返回NVector,而不是NMatrix如何獲取C中的Ruby對象的類?

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

回答

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); 
} 
+2

「就像發條一樣,只要我問一個關於Stackoverflow的問題,我就找到了答案。」我們從多蘿西那裏學到了什麼? :-)當SO允許時給自己選擇的答案。 –

+1

我認爲接受的方法是rb_class_of(CLASS_OF只是一個圍繞該函數的宏) –

相關問題