Boost.Python возвращается по внутренней ссылке - PullRequest
2 голосов
/ 08 мая 2011

Дано два класса:

class B {
  // ...
};

class A {
 public:
  B& b() { return *b_; }
 private:
  B* b_;
};

В модуле Boost.Python у меня есть

bp::class_<B, boost::noncopyable>(...)...;

, который работает нормально. У меня также есть

bp::class_<A, boost::noncopyable>(...)
  .def("b", &A::b,
       bp::return_internal_reference<>()
      )

но он не компилируется. Там написано:

/opt/local/include/boost/python/detail/caller.hpp:102:109: error: 'struct boost::python::detail::reference_existing_object_requires_a_pointer_or_reference_return_type<B>' has no member named 'get_pytype'

Но у него должен быть pytype, верно?

...