/trunk/Examples/test-suite/template_virtual.i

# · Swig · 34 lines · 25 code · 9 blank · 0 comment · 0 complexity · a0c3d7a264ffeb9ecb1de355e46a14b4 MD5 · raw file

  1. %module template_virtual
  2. // Submitted by Marcelo Matus
  3. // assertion emmitted with templates + derivation + pure virtual member
  4. // allocate.cxx:47: int Allocate::is_abstract_inherit(Node*, Node*):
  5. // Assertion `dn' failed.
  6. %inline %{
  7. template <class T>
  8. class A
  9. {
  10. public:
  11. virtual ~A() { }
  12. virtual void say_hi() = 0; // only fails with pure virtual methods
  13. virtual void say_hello() {} // this works fine
  14. protected:
  15. A() { } // defined protected as swig generates constructor by default
  16. };
  17. template <class T>
  18. class B : public A<T>
  19. {
  20. protected:
  21. B() { } // defined protected as swig generates constructor by default
  22. };
  23. %}
  24. %template(A_int) A<int>;
  25. %template(B_int) B<int>; // !!!! it crashes right here !!!!!