exporting boost::tuples::tuple to python
C Booth
cb9001 at hotmail.com
Fri Jul 12 20:10:01 EDT 2002
Hi,
I am trying to export a C++ class to python using the boost package
(www.boost.org). I want my C++ functions to return a tuple:
#include "boost/tuple/tuple.hpp"
class TestClass
{
public:
TestClass();
~TestClass();
void setXYZ(float x,float y, float z);
boost::tuples::tuple<float,float,float> getXYZ();
};
And i wrap the class up as follows...
#include <boost/python/class_builder.hpp>
BOOST_PYTHON_MODULE_INIT(Test)
{
boost::python::module_builder TestClass_Module("Test");
boost::python::class_builder<TestClass>
pyTestClass(TestClass_Module, "TestClass");
pyTestClass.def(boost::python::constructor<>());
pyTestClass.def(TestClass::getXYZ, "getXYZ"); // <-- Line #1
pyTestClass.def(TestClass::setXYZ,"setXYZ");
}
The class works just fine if i use it from C++ and if i comment out
Line #1 again it works just fine in both C++ and python. I am using
MSVC 6.0, boost 1.27.0. When I don't comment out Line #1 I get the
appended error message, is this something i can fix, or should i give
up on MSVC and try another compiler?
thanks for any help,
chris
---------------------------
j:\chrisb\boost_1_27_0\boost\python\detail\extension_class.hpp(393) :
error C2664: 'py_extension_class_converters' : cannot convert
parameter 1 from 'struct boost::python::type<class
boost::tuples::tuple<float,float,float,struct boost::tuples::null_
type,struct boost::tuples::null_type,struct
boost::tuples::null_type,struct boost::tuples::null_type,struct
boost::tuples::null_type,struct boost::tuples::null_type,struct
boost::tuples::null_type> >' to 'struct boost::python::type<class
FasTEMComm>'
No constructor could take the source type, or constructor
overload resolution was ambiguous
j:\chrisb\boost_1_27_0\boost\python\caller.hpp(33) : see
reference to function template instantiation 'struct _object *__cdecl
boost::python::to_python(const class
boost::tuples::tuple<float,float,float,struct
boost::tuples::null_type,struct
boost::tuples::null_type,struct boost::tuples::null_type,struct
boost::tuples::null_type,struct boost::tuples::null_type,struct
boost::tuples::null_type,struct boost::tuples::null_type> &)' being
compiled
j:\chrisb\boost_1_27_0\boost\python\detail\extension_class.hpp(393) :
error C2228: left of '.to_python' must have class/struct/union type
j:\chrisb\boost_1_27_0\boost\python\caller.hpp(33) : see
reference to function template instantiation 'struct _object *__cdecl
boost::python::to_python(const class
boost::tuples::tuple<float,float,float,struct
boost::tuples::null_type,struct
boost::tuples::null_type,struct boost::tuples::null_type,struct
boost::tuples::null_type,struct boost::tuples::null_type,struct
boost::tuples::null_type,struct boost::tuples::null_type> &)' being
compiled
Error executing cl.exe.
--------------------
More information about the Python-list
mailing list