[C++-sig] Re: pure virtual methods with pyste

Daniel Wallin dalwan01 at student.umu.se
Mon Jul 28 21:11:25 CEST 2003


At 20:54 2003-07-28, David Abrahams wrote:
>David Abrahams <dave at boost-consulting.com> writes:
>
> >   BOOST_PYTHON_MODULE(test)
> >   {
> >       class_<Abstract, AbstractWrap, boost::noncopyable>("Abstract")
> >           .def("a", &Abstract::a)
> >           .def("a", &AbstractWrap::default_a)
> >           ;
> >
> >       def("call", call);
> >   }
> >
> > I just wish I knew a way to detect that a function was pure-virtual so
> > we could have Boost.Python generate that default_a automatically.
>
>Perhaps this interface would be nice:
>
>   BOOST_PYTHON_MODULE(test)
>   {
>       class_<Abstract, AbstractWrap, boost::noncopyable>("Abstract")
>           .def("a", pure_virtual(&Abstract::a))
>           ;
>
>       def("call", call);
>   }
>
>??

FWIW, we had a similar problem in luabind, where we needed to specify if a 
function
was going to yield from a coroutine. We solved this by introducing a 
placeholder
in the policy list, like this:

    .def("a", &Abstract::a, yield)

This solution could also apply to this problem

    .def("a", &Abstract::a, pure_virtual)

---
Daniel Wallin





More information about the Cplusplus-sig mailing list