Bonjour,
Je voudrais exporter la classe template vector3d vers python:en C++ et je voudrais la faire convertible en liste python (et vice-versa).
- j'ai traduit le code de la classe en python
- Je voudrais rendre le classe python convertible en classe C++ et vice-versa
Je sais comment rendre une classe basiques convertible mais j'ai un problème avec lec templates.
et en python:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 /* simplifié : */ template<class T> class vector3d { public: T X, Y, Z; vector3d(): X(0), Y(0), Z(0) {} ~vector3d() {} T getLength() { return std::sqrt(X*X+Y*Y+Z*Z); } };
Je voudrais que le boost.python reconnaisse la classe python et la convertisse automatiquement selon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 class vector3d def __init__(self): self.X = self.Y = self.Z = 0 def getLength(self): return math.sqrt(self.X**2 + self.Y**2 + self.Z**2)
Merci.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 template<class T> vector3d<T> &from_python(boost::python::object &obj) { namespace bp = boost::python; vector3d<T> vec; vec.X = bp::extract<T>(obj.attr("X"))(); vec.Y = bp::extract<T>(obj.attr("Y"))(); vec.Z = bp::extract<T>(obj.attr("Z"))(); return vec; }
Partager