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