RubyのC++拡張を記述し、Ruby配列オブジェクトからRuby文字列オブジェクトを抽出しようとしています。 C/C++文字列オブジェクト。Ruby配列から取り出した文字列をC/C++文字列に変換する方法
#include <iostream>
#include <ruby.h>
VALUE bar_func(VALUE self, VALUE ary){
std::string s = StringValuePtr(rb_ary_entry(ary, 0));
...
return 0;
}
extern "C" VALUE rb_cFoo;
VALUE rb_cFoo;
extern "C" void Init_foo(){
rb_cFoo = rb_define_class("Foo", rb_cObject);
rb_define_singleton_method(rb_cFoo, "bar", RUBY_METHOD_FUNC(bar_func), 1);
}
とtest.rb:
require "foo"
Foo.bar(["Hello World!"])
私はfoo.cpp
をコンパイルしよう、コンパイラは「のようなものを言って、エラーを返す
私はfoo.cppを持っています単一の用語&オペランドは左側の値 "を必要とします(正確なメッセージではありません。別の自然な笑い声で与えられた)。それは私の使用法に関するものですStringValuePtr
。私は間違って何をしていますか、それをどうやって修正することができますか?
参照演算子 '&'、* *左側の値を使用する必要があり、すなわち、定数に適用することができませんでした。 – kirilloid
@kirilloidコードを修正する方法はありますか? – sawa