在编写代码的时候,发现一个现象:
- 模板类从一个父模板类继承后,不能访问其内部的protected成员变量,提示:not declare;
- 普通类从一个父模板类继承后,可以访问其内部的protected成员变量,可正常编译和使用;
对于第1个现象,如果想正常使用需要加上父模板类的域名;
下面上代码
- 模板类继承模板类
1 #include <iostream> 2 namespace test 3 { 4 template <typename T> 5 class Base 6 { 7 public: 8 void Show() 9 { 10 std::cout << "hello world1! Base. a = " << a << std::endl; 11 } 12 13 protected: 14 int a = 0; 15 }; 16 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 27 28 int main() 29 { 30 test::Child<int> ch; 31 ch.Show(); 32 std::cout << "main.\n"; 33 return 0; 34 }