Ruby-C++ 확장을 개발 중입니다. CPP 클래스에 비 정적 메서드를 작성해야하고 클래스 인스턴스를 사용하여 루비 클라이언트에서 해당 클래스 메서드를 호출해야합니다.Ruby-C++ 확장의 C++ 클래스에서 비 정적 메서드를 작성하는 방법은 무엇입니까?
require 'Test'
include Test
a = Mclass.new
내가 루비 클라이언트에서 "Mclass"의 인스턴스를 얻을 수 있어요 :
#include "ruby.h"
#include <iostream>
using namespace std;
class Mclass
{
public:
int i;
static VALUE newMethod(VALUE self);
static VALUE newInitialize(VALUE self);
};
VALUE Mclass::newMethod(VALUE self)
{
cout<<"It is newMethod() method of class Mclass"<< endl;
return Qnil;
}
VALUE Mclass::newInitialize(VALUE self)
{
cout<<"It is newInitialize() method of class Mclass"<< endl;
return Qnil;
}
extern "C" void Init_Test(){
VALUE lemon = rb_define_module("Test");
VALUE mc = rb_define_class_under(lemon, "Mclass", rb_cObject);
rb_define_method(mc, "new",
reinterpret_cast< VALUE(*)(...) >(Mclass::newMethod), 0);
rb_define_method(mc, "initialize",
reinterpret_cast< VALUE(*)(...) >(Mclass::newInitialize), 0);
}
또한 다음 루비 클라이언트 코드는 다음과 같습니다
다음은 MAIN.CPP입니다. 그러나 루비 클라이언트에서 클래스 비 정적 메소드를 호출하고 싶습니다. CPP 클래스에 비 정적 메서드를 추가하려면 어떻게해야합니까?
감사합니다. – BSalunke