我使用C++类创建了一个示例ruby扩展.当我没有解析值时,它工作正常.但是当我解析参数时它显示错误.这是我的代码.
C++头文件
#ifndef CIRCLE_H_ #define CIRCLE_H_ class Circle { public: Circle(float radius):_radius(radius) {} float getArea() { return 3.14159 * _radius * _radius; } private: float _radius; };
CPP文件.
#include#include"Circle.h" VALUE method_test(VALUE y){ double x= NUM2DBL(y); Circle *cir= new Circle(x); return DBL2NUM(cir->getArea()); } extern "C" void Init_Test(){ VALUE lemon = rb_define_module("Test"); rb_define_method(lemon, "test", (VALUE(*)(ANYARGS))method_test,1); }
extconf.rb
require 'mkmf' have_library( 'stdc++' ); $CFLAGS << " -Wall" create_makefile( 'Test' );
run.rb
require 'rubygems' require 'Test' include Test puts test(7)
当我执行run.rb时,它显示一个错误.
run.rb:7:in `test': can't convert Object into Integer (TypeError) from run.rb:7:in `'
请帮我解决这个问题.谢谢.