首页 > 解决方案 > C++继承模板类:隐藏成员变量

问题描述

为什么以下代码无法编译?

#include <iostream>
template <class T>
class A
{
  public:
  T data;
};

template<typename T>
class B : public A<T>
{
 public:
 void foo(){printf("%d\n", data);}
};

int main() 
{
  B<int> b;
}

错误:

bla.cpp: In member function ‘void B<T>::foo()’:
bla.cpp:14:30: error: ‘data’ was not declared in this scope
void foo(){printf("%d\n", data);}

似乎成员变量“数据”由于某种原因被隐藏了。

标签: c++

解决方案


您可以通过以下方式访问基础的成员变量this

this->data;

推荐阅读