code_junkie

Templated superclass linking problem

Nov 11th, 2011
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. template<class BaseClass>
  2. class Templated : public BaseClass
  3. {
  4. public:
  5. Templated(int a);
  6. virtual int Foo();
  7. };
  8.  
  9. class Base
  10. {
  11. protected:
  12. Base(int a);
  13. public:
  14. virtual int Foo() = 0;
  15. protected:
  16. int b;
  17. };
  18.  
  19. #include "template_test.h"
  20.  
  21. Base::Base(int a)
  22. : b(a+1)
  23. {
  24. }
  25.  
  26. template<class BaseClass>
  27. Templated<BaseClass>::Templated(int a)
  28. : BaseClass(a)
  29. {
  30. }
  31.  
  32. template<class BaseClass>
  33. int Templated<BaseClass>::Foo()
  34. {
  35. return this->b;
  36. }
  37.  
  38. #include "template_test.h"
  39.  
  40. int main()
  41. {
  42. Templated<Base> test(1);
  43. return test.Foo();
  44. }
  45.  
  46. template<> Templated<Base>::Templated(int a);
  47. template<> int Templated<Base>::Foo();
  48.  
  49. template<class BaseClass>
  50. class Templated : public BaseClass
  51. {
  52. public:
  53. Templated(int a) : BaseClass(a) {}
  54. virtual int Foo() { return BaseClass::b; }
  55. };
  56.  
  57. void Nobody_Ever_Calls_This()
  58. {
  59. Templated<Base> dummy(1);
  60. }
  61.  
  62. Templated<Widget>
Add Comment
Please, Sign In to add comment