title: Can't refer to base-class member in derived template class
body: <pre><code>template &lt;class T&gt;class Array
  {
  protected :
      T* data;
      int size;
  };
  template&lt;class T&gt;class Stack : protected Array&lt;T&gt;
  {
      int top;
  public:
      Stack(){};
  
  public:
      void Push(T x) {data[++top] = x;}
  };
  </code></pre>
  
  <p>Why it say '"data" was not declared in this scope' in <code>Push</code>? How can I fix this? When I delete each <code>template&lt;T&gt;</code>, it works normally. Is something wrong in my template?</p>