From: Adam N. <a.n...@sh...> - 2011-03-14 04:15:19
|
Hi all, I'm adding SWIG support to a C++ library to make it accessible from within Python. It seems SWIG has some support for nested classes, but it is choking on the .hpp files I'm giving it and I'm not sure why. I think the problem is that the nested part is just a forward declaration: class Outer { class Inner; ... }; class Outer::Inner { class Inner2; ... }; class Outer::Inner::Inner2 { ... }; When SWIG reads that it tells me: Error: 'Outer::Inner' is not defined as a valid scope. Warning 401: Nothing known about base class 'Outer::Inner::Inner2'. Ignored. Warning 503: Can't wrap class ns::Outer::Inner unless renamed to a valid identifier. Warning 503: Can't wrap class Outer::Inner::Inner2 unless renamed to a valid identifier. All the non-nested classes are wrapped just fine. I'm hoping it's merely a case of having missed a directive or something, but it looks like SWIG is treating the class declaration as having a namespace prefix rather than realising the prefix is the parent class name. Is it still possible to wrap these structures with SWIG? I will never need to create new instances of any of these classes within Python, but other functions will return boost::shared_ptr wrapped instances of all three classes, and I will need to call their functions from Python. Any suggestions? Many thanks, Adam. |