模板类从一个父模板类继承后,不能访问其内部的protected成员变量,提示:not declare;
普通类从一个父模板类继承后,可以访问其内部的protected成员变量,可正常编译和使用;
对于第1个现象,如果想正常使用需要加上父模板类的域名;
下面上代码
模板类继承模板类
1 #include <iostream>
2 namespace test
4 template <typename T>
5 class Base
7 public:
8 void Show()
10 std::cout << "hello world1! Base. a = " << a << std::endl;
11 }
13 protected:
14 int a = 0;
15 };
17 template <typename T>
18 class Child : public Base<T>
19 {
20 public:
21 void Show()
22 {
23 std::cout << "hello world1! Child. a = " << a << std::endl;
24 }
25 };
26 } // namespace test
28 int main()
29 {
30 test::Child<int> ch;
31 ch.Show();
32 std::cout << "main.\n";
33 return 0;
View Code
运行结果: