[C++-sig] Default argument and return policies
Brian McCandless
bmccandl at llnl.gov
Fri Sep 6 03:49:28 CEST 2002
I have a function that uses default arguments and also needs a call policy.
But I was not able to get this to work. I last grabbed the code from
CVS yesterday.
Am I doing something wrong or is this an omission in the library?
Here is my example:
#include <boost/python/class.hpp>
#include <boost/python/return_value_policy.hpp>
#include <boost/python/manage_new_object.hpp>
#include <boost/python/module_init.hpp>
#include <boost/python/def.hpp>
using namespace boost::python;
struct Data {
Data(double d) : val(d) {}
double val;
};
Data* makeData1(double f, double d = 1.0) {
return new Data(f * d);
}
Data makeData2(double f, double d = 1.0) {
return Data(f * d);
}
BOOST_PYTHON_FUNCTION_GENERATOR(makeData1_stubs, makeData1, 1, 2)
BOOST_PYTHON_FUNCTION_GENERATOR(makeData2_stubs, makeData2, 1, 2)
BOOST_PYTHON_MODULE_INIT(defaults)
{
// works, but you have to pass in two arguments
def("makeData1", makeData1,
return_value_policy<manage_new_object>());
// works with default arguments as expected.
def("makeData2", makeData2, makeData2_stubs());
#if 0
// Does not compile!
def("makeData1_with_defaults", makeData1, makeData1_stubs(),
return_value_policy<manage_new_object>());
#endif
class_<Data> data("Data", args<double>());
data.def_readwrite("val", &Data::val);
}
--
Brian McCandless bmccandl at llnl.gov 925/424-2690
More information about the Cplusplus-sig
mailing list