ISHEEPI 发表于 2020-6-21 10:13:07

c++ Stack 栈类 最简单的类型 出了点问题

#include<iostream>
template <class T>
class Stack
{
public:
      Stack(unsigned int size)
      {
                this->size=size;
                data=new T;
                sp=0;
      }
      ~Stack();
      void push(T dat)
      {
                data=dat;
      }
      T pop()
      {
                if(sp-1<0)
                {
                        std::cout << "栈空!\n";
                        
                }
                else
                {
                        return(data[--sp]);
                }
      }
private:
      unsigned int size;
      unsigned int sp;
      T *data;
};
int main()
{
      Stack<int> intStack(30);
      int i;
      for(i=0;i<20;i++)
                intStack.push(i);
      for(i=0;i<20;i++)      //错误定位这一行      undefined reference to Stack<int>::"stack()'

                std::cout << intStack.pop();
}
求指导{:10_277:}

_匆匆来也 发表于 2020-6-21 12:04:28

不清楚你用的啥编译器,反正我改了下你的,在我的IDE中能运行
#include <iostream>

using namespace std;
template <class T>
class Stack
{
public:
    Stack(unsigned int size)
    {
      this->size = size;
      data = new T;
      sp = 0;
    }
    ~Stack(){}// 你这行有问题,还有我不明白你为啥不用using namespace std;
    void push(T dat)
    {
      data = dat;
    }
    T pop()
    {
      if (sp - 1<0)
      {
            cout << "栈空!\n";
            // return NULL;
      }
      else
      {
            return(data[--sp]);
      }
    }
private:
    unsigned int size;
    unsigned int sp;
    T *data;
};
int main()
{
    Stack<int> intStack(30);
    int i;
    for (i = 0; i<20; i++)
      intStack.push(i);
    for (i = 0; i < 20; i++)      //错误定位这一行      undefined reference to Stack<int>::"stack()'
      cout << intStack.pop() << endl;
}

ISHEEPI 发表于 2020-6-22 10:01:02

_匆匆来也 发表于 2020-6-21 12:04
不清楚你用的啥编译器,反正我改了下你的,在我的IDE中能运行

Soga 原来是 析构器没定义,大意了谢谢老哥{:10_257:}
页: [1]
查看完整版本: c++ Stack 栈类 最简单的类型 出了点问题