C++模板实例化指针空错误

标签 c++ class templates pointers instantiation

我想编写自己的堆栈版本,这就是我所拥有的:

template<class myStackType> class myStackClass
{
    myStackType array[1000];
    int size;
public:
    myStackClass()
    {
        size = 0;
    }
    void pop()
    {
        size--;
    }
    void push(myStackType a)
    {
        array[size] = a;
        size++;
    }
    myStackType top()
    {
        return array[size-1];
    }
    bool empty()
    {
        return(size == 0);
    }
};

但当我尝试实际使用它时

struct grade
{    
    int mid;
    int final;
    string name;
    grade(int mid1 = 0, int final1 = 0, string name1 = 0)
    {
        mid = mid1;
        final = final1;
        name = name1;
    }
};

myStackClass<grade> myStack;

我得到一个调试断言失败:无效的空指针

另一方面,std::stack 在具有相同数据类型的同一位置工作得很好

我做错了什么?

谢谢!

最佳答案

这是错误的:

string name1 = 0

它试图从 const char* 构造一个 string,这是 0 - 这是不允许的。你的意思可能是:

string name1 = ""

关于C++模板实例化指针空错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19550173/

相关文章:

C# 应用程序在调用 COM 类的方法时崩溃

javascript - 找出是否所有图像都有类

java - 如何从java中的类规范名称创建类?

c++ - 我将如何删除此类对象? (C++)

c++ - 函数模板 : clang rejects, gcc 接受的从属名称查找

c++ - 指向静态作为模板参数的指针/使用 c 字符串实例化模板

c++ - 如何正确地从嵌套结构派生?

c++ - 程序的输出是什么——异常处理?

c++ - 遍历多维数组时遇到问题

c++ - 具有相同类型参数的类型安全可变参数函数