• 模板类从一个父模板类继承后,不能访问其内部的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
    

    运行结果: