2010-04-26 24 views
5

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.

Trả lời

Các vấn đề liên quan