$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: ab_goldin (agoldin_at_[hidden])
Date: 2002-03-01 17:52:40
In a library I am trying to wrap exists a class the whole purpose of
which is to enclose some global variables. Its fields are declared as
static. I have no idea how to wrap them in boost::python. An obvious
way fails:
//------------ test.cpp -----------------
class test {
public:
static int a;
int b;
};
#include <boost/python/class_builder.hpp>
namespace python = boost::python;
namespace {
BOOST_PYTHON_MODULE_INIT(tst)
{
// create an object representing this extension module
python::module_builder module("tst");
python::class_builder<test> test_class(module, "test");
test_class.def_readonly(&test::a, "a");
test_class.def_readonly(&test::b, "b");
}
}
//--------------------
Compilation:
cd /home/goldin/camwa/supermix-python/
make -k test
g++ -I/home/goldin/python/src/boost_1_27_0 -I/usr/include/python2.1
-Wall -I/home/goldin/python/src/boost_1_27_0 -c test.cpp
test.cpp: In function `void {anonymous}::init_module_tst()':
test.cpp:28: no matching function for call to
`boost::python::class_builder<test,boost::python::detail::held_instance<test>
>::def_readonly (int *, const char[2])'
Compiler does not complain about non-static field.
I am not using C++ that much, so I could miss something obvious. Could
some kind soul please give me a hint what to do?
I am running Debian testing (woody), i386
gcc:
gcc -v
Reading specs from /usr/lib/gcc-lib/i386-linux/2.95.4/specs
gcc version 2.95.4 (Debian prerelease)
boost 1.27 freshly from boost website (not one packaged with debian).