| %module smart_pointer_ignore | |
| %ignore Derived; | |
| %inline %{ | |
| class Base { | |
| public: | |
| void baseMethod() {} | |
| }; | |
| class Derived : public Base { | |
| public: | |
| void derivedMethod() {} | |
| }; | |
| template <class T> | |
| class Ptr { | |
| public: | |
| Ptr(T *t) : ptr(t) {} | |
| T * operator->() const { return ptr; } | |
| private: | |
| T *ptr; | |
| }; | |
| %} | |
| %template(DerivedPtr) Ptr<Derived>; | |
| %inline %{ | |
| Ptr<Derived> makeDerived() { | |
| return Ptr<Derived>(new Derived()); | |
| } | |
| %} |