Boost logo

Boost :

Subject: Re: [boost] [python] Setting a pointer into an object
From: Robert Dailey (rcdailey_at_[hidden])
Date: 2008-09-30 19:00:39


On Tue, Sep 30, 2008 at 4:05 PM, Robert Dailey <rcdailey_at_[hidden]> wrote:
> On Tue, Sep 30, 2008 at 3:14 PM, David Abrahams <dave_at_[hidden]> wrote:
>> Just wrap the class without exposing any of its interesting parts and
>> you should be fine:
>>
>> class_<SomeClassOfMine>("SomeClassOfMine");
>
> Thanks David.
>
> After I posted my original inquiry I found out through PyErr_Print()
> that it needed the class to be exposed to Python. However, I no longer
> wish to expose the class, but instead I want to define a global
> function in a python script that I'm loading.
>
> For example, I would add this function to the namespace that I pass
> into exec_file().
>
> The C++ function I want to expose looks like:
>
> static Rocket::Core::Context* GetContext( std::string const& context_name );
>
>
> All I'm doing is this:
>
> boost::python::object MyNewFunction( &GetContext );
>
> However, when I compile this I get:
>
> error C2027: use of undefined type
> 'boost::python::detail::specify_a_return_value_policy_to_wrap_functions_returning<T>'
> with
> [
> T=result_t
> ]
>
>
> I can't exactly use return policies here since I'm not using def().
> How can I make this work?
>

After a lot more research, I found out about make_function(). This is
what def() uses and seems to be exactly what I"m looking for.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk