[Boost.Python] conversions automatique des templates
Bonjour,
Je voudrais exporter la classe template vector3d vers python:- j'ai traduit le code de la classe en python
- Je voudrais rendre le classe python convertible en classe C++ et vice-versa
en C++ et je voudrais la faire convertible en liste python (et vice-versa).
Je sais comment rendre une classe basiques convertible mais j'ai un problème avec lec templates.
Code:
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);
}
}; |
et en python:
Code:
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) |
Je voudrais que le boost.python reconnaisse la classe python et la convertisse automatiquement selon :
Code:
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;
} |
Merci.