Tôi có một lớp C++, trong đó có các phương pháp sau:tính chuỗi-mui trần tăng :: python
class Bar {
...
const Foo& getFoo() const;
void setFoo(const Foo&);
};
nơi lớp Foo
là mui trần để std::string
(nó có một constructor ngầm từ std::string
và một nhà điều hành std::string
cast).
tôi định nghĩa một lớp wrapper Boost.Python, trong đó, trong số những thứ khác, định nghĩa một tài sản dựa trên hai chức năng theo thời gian:
class_<Bar>("Bar")
...
.add_property(
"foo",
make_function(
&Bar::getFoo,
return_value_policy<return_by_value>()),
&Bar::setFoo)
...
Tôi cũng đánh dấu sự lớp như mui trần đến/từ std::string
.
implicitly_convertible<std::string, Foo>();
implicitly_convertible<Foo, std::string>();
Nhưng khi chạy tôi vẫn nhận được một lỗi chuyển đổi cố gắng truy cập khách sạn này:
TypeError: No to_python (by-value) converter found for C++ type: Foo
Làm thế nào để đạt được chuyển đổi mà không quá nhiều soạn sẵn các chức năng bao bọc? (Tôi đã có tất cả các chức năng chuyển đổi trong lớp Foo
, vì vậy sự trùng lặp là không mong muốn.