c++ - 使用父类的变量

标签 c++ templates inheritance dependent-name

我一直在尝试使用模板来实现堆栈。我的问题是在这种情况下如何使用父类中的变量?

在这种情况下,我的编译错误是:“top, a, size”未在此范围内声明。

    template<class T>
        class buffer
        {
  public:
            T *a;
            int top,i,size;
        };

    template<class T>
        class Queue: public buffer<T>
        {
    public:
            Queue(int siz)
            {
                a=new T[siz];
                size=siz;
                top=-1;
            }
            void push(T ele)
            {
                if(top!=size-1){a[++top]=ele;} 
            }

            T pop()
            {
                  return(a[top--]);
            }

            void print()
            {
                for(i=0;i<top;i++)
                    cout<<" "<<a[i];

                cout<<endl;
            }
        };

最佳答案

要使它们成为从属名称,您必须使用 this->buffer<T>::之前。

所以

this->a = new T[siz];
this->size = siz;
this->top = -1;

关于c++ - 使用父类的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34387834/

相关文章:

c++ - 我如何单独创建和启动我的线程

c++ - 将流运算符与模板类一起使用

C# 和泛型 - 为什么调用基类中的方法而不是派生类中的新方法?

html - perl 子程序输出附加 "1"

Java外部类扩展静态内部类

java - java中未知的父变量问题

c++ - 向数学程序测验添加倒数计时器

c++ - C/C++ : Float comparison speed

c++ - 使用句柄从 CreateProcess() 收集输出

c++ - 从模板化类虚函数中调用的模板函数不正确