从模板类派生的模板类

时间:2019-09-14 20:40:24

标签: c++ templates

我正在尝试使用奇怪的重复模板模式。但是我收到编译错误,指出未在此范围内声明data。有人知道如何解决这个问题吗?

  1 #include <iostream>
  2 using namespace std;
  3 
  4 
  5 template<typename derived>
  6 class A
  7 {
  8 |  public:
  9 |  |  A(int a) : data(a) {}
 10 |  |  void func1()
 11 |  |  {
 12 |  |  |  static_cast<derived*>(this)->func2();
 13 |  |  }
 14 |  protected:
 15 |  |  int data;|  
 16 };
 17 
 18 template <int dim>
 19 class B : public A<B<dim>>
 20 {
 21 |  public:
 22 |  |  B(int a) : A< B<dim> >(a) {}
 23 |  |  void func2()
 24 |  |  {
 25 |  |  |  std::cout << "Hey this is " << data << std::endl;
 26 |  |  }
 27 };
 28 
 29 int main()
 30 {
 31 |  A<B<1>> myclass(3);
 32 |  myclass.func1();
 33 |  return 0;
 34 }

0 个答案:

没有答案