我正在尝试使用奇怪的重复模板模式。但是我收到编译错误,指出未在此范围内声明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 }