Hello,
I need help again.
In the example below I either get the error message during compilation:
> ...
>/home/mihail/temporary/boost_1_37_0/boost/python/object/value_holder.hpp:66:
>error: cannot declare field
>‘boost::python::objects::value_holder<A0>::m_held’ to be of abstract type ‘A0’
>boost.cpp:5: note: because the following virtual functions are pure within
>‘A0’:
>boost.cpp:7: note: virtual void A0::pure()
or, if I don't expose class A0 (as it is currently commented out), when
importing the module in python:
> <type 'exceptions.RuntimeError'>: extension class wrapper for base class A0
> has not been created yet
How can I fix the problem? I don't need to expose A0, well, exposing pure
classes doesn't make sense anyway, does it?
But I need to be able to call in python boost_ext.B(boost_ext.A()), so that I
think I have to declare the A0<-A inheritance relationship somehow.
Thank you
Mihail
boost.cpp:
// A is a concrete implementation of the abstract class A0.
// the constructor of B<T> takes the abstract class A0
class A0{
public:
virtual void pure()=0;
virtual ~A0(){};
};
class A: public A0{
public:
void pure(){};
~A(){};
};
template<class T> class B{
T value;
public:
B(const A0&){};
};
typedef B<double> Lumi;
BOOST_PYTHON_MODULE(boost_ext)
{
using namespace boost::python;
//class_<A0>("A0");
class_<A,bases<A0> >("A");
class_<Lumi>("Lumi",init<const A0&>());
}
_______________________________________________
Cplusplus-sig mailing list
[email protected]
http://mail.python.org/mailman/listinfo/cplusplus-sig