Из мелочной любви к экономии решил в классе использовать
class Ta
{
public:
boost::array<float,3> x
};
class_<std::vector<float> >("FloatVec")
.def(vector_indexing_suite<std::vector<float> >())
;
class_<Tarr3>("Vec3")
.def("__getitem__",&(Tarr3::operator[]))
;
c:\projects\rosa\reactormodels\rbt10\pointkin_dll.cpp(19): error C2780: ‘boost::python::class_<W> &boost::python::class_<W>::def(const char *,Fn,const A1 &,const A2 &,const A3 &)’ : expects 5 arguments - 2 provided
наверное надо ковыряться с перегрузкой operator
Получается сделать призводный класс и там все что надо прилепить
template<class T,int N>
class Tcv:public boost::array<T,N>
{
public:
T getitem(int i)const {return (*this)[i];}
void setitem(int i,const T& v){(*this)[i]=v;}
T len() const {return N;}
};
class_<TcvNC>("TcvNC")
.def("__getitem__",&TcvNC::getitem)
.def("__setitem__",&TcvNC::setitem)
.def("__len__",&TcvNC::len)
;