初始化一个空堆栈

时间:2015-10-13 19:36:11

标签: c++ class null initialization stack

我试图初始化一个大小为3的空堆栈,但我的程序不允许我将NULL放入其中一个元素中。我不确定问题是什么。该程序在尝试初始化其中一个元素时停止工作。

Stack300::Stack300 ()
{

for (int i = 0; i < 3; i++)
{
    stackArray[i] = '\0';
    //stackArray[i] = i;
}

top = 0;

return;
}

我的.h文件。

#ifndef CONGERA2_H
#define CONGERA2_H

typedef float Element300;

class Stack300
{
public:
    Stack300 ();
    Stack300 (const int);
    Stack300 (Stack300 &old);
    ~Stack300();
    void push300(const Element300);
    Element300 pop300();
    void viewTB300();
    void viewBT300();

private:
    const int MAX_STACK = 80;
    Element300 * stackArray;
    int top;

};

#endif

我的主要文件。

#include <iostream>
#include "congera2.h"
using namespace std;



int main()
{

Element300 temp1 = 1.1;

Element300 temp2 = 2.2;

Element300 temp3 = 3.3;

Stack300 myStack;

Stack300 myStack2 (myStack);

/* myStack.push300(temp1);

myStack.push300(temp2);

myStack.push300(temp3);*/

cout << "hello";


return 0;
}

1 个答案:

答案 0 :(得分:1)

在构造函数中,您永远不会将任何内存分配给'stackArray'成员。以下行将完成初始化3个浮点整数的动态数组。

stackArray = new float[3];

然后,您将确保在析构函数中释放此内存。

编辑添加一些有用的资源;这些页面很好地解释了指针和动态内存分配背后的概念: PointersDynamic Memory