2
私はPythonに公開したいC++クラスを持っています。 (このクラスはすでに書かれており、容易に変更できないと仮定します)。このクラスでは、ポインタであるメンバーがあります。そのメンバーも公開したいと思います。ここにコードの最小限のバージョンがあります。理解Boost.Python:ポインタであるクラスメンバーを公開する
>>> c = C("hello")
>>> c.a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: No to_python (by-value) converter found for C++ type: std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >*
:私はそのフィールドにアクセスしようとしたPythonランタイムエラーが発生していることを除いて
struct C {
C(const char* _a) { a = new std::string(_a); }
~C() { delete a; }
std::string *a;
};
BOOST_PYTHON_MODULE(text_detection)
{
class_<C>("C", init<const char*>())
.def_readonly("a", &C::a);
}
それは、大丈夫コンパイルされます。しかし、問題は、それは可能性のあるメンバーのポインタa
ブーストのpythonを介して公開することは可能ですか?そしてどうやって?
ありがとうございます!