[C++-sig] Class scoped enum losing scope
Hans Meine
meine at informatik.uni-hamburg.de
Thu Feb 5 09:51:50 CET 2009
On Thursday 05 February 2009 02:58:08 Rao, Sumeeth wrote:
> >>> import Boost_FooBar
> >>>
> >>> bar = Boost_FooBar.Bar()
> >>>
> >>> var = Boost_FooBar.Foo.eType.TYPE_B < --Seems to understand
> that there is a Foo::etype::TYPE_B value
> >>> var
>
> Boost_FooBar.eType.TYPE_B <------------------ var seems to
> have "lost" the scope of class Foo!
Yes, that's ugly, and also poses problems with pickling. (The same problem
affects other nested types, i.e. classes.)
> >>> stat = bar.barfun(Boost_FooBar.Foo.eType.TYPE_B)
>
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> Boost.Python.ArgumentError: Python argument types in
> Bar.barfun(Bar, Boost_FooBar.eType) < ------ Why is the
> parameter not of type Boost_FooBar.Foo.eType?
I am not sure that this is the problem; as you demonstrated above, boost will
forget about the scope, but you should still be able to use 'var' normally
IIRC. Maybe your error is somewhere else? E.g. did you try to expose a
global function 'barfun' instead of a Bar member function? (I am unsure, and
I never used bp::wrapper so far.)
HTH,
Hans
More information about the Cplusplus-sig
mailing list