在编写代码的时候,发现一个现象:

  1. 模板类从一个父模板类继承后,不能访问其内部的protected成员变量,提示:not declare;
  2. 普通类从一个父模板类继承后,可以访问其内部的protected成员变量,可正常编译和使用;

对于第1个现象,如果想正常使用需要加上父模板类的域名; 

下面上代码

  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 }
View Code

相关文章:

  • 2021-11-20
  • 2022-02-10
  • 2022-02-18
  • 2022-12-23
  • 2022-12-23
  • 2021-04-30
  • 2021-12-27
  • 2021-05-20
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-04-11
  • 2021-09-27
  • 2022-12-23
相关资源
相似解决方案