我自己的堆栈中的 C++ 奇怪行为 class

C++ Strange behavior in my own stack class

这是一个包含我的 Stack class 和一些其他功能的程序。

整个程序应将文件中的数字压入堆栈,并使用 class 的 print() 方法打印该堆栈。例如,如果 num_file.txt

0 1 2 3 4 5 6 7 8 9 10

在内部,程序应该以这种方式工作:

但是当 VecToMyStack(IntervalCheck(ReadTheFile())).print(); 行被执行时,我得到

Access violation reading location 0xFEEEFEEE.

异常。我的 Stack class 的析构函数似乎在 print() 函数之前是 运行。为什么会这样?有什么特别的东西我应该添加到我的 Stack class 或 VecToMyStack() 函数中吗?

最后,经过几个小时的研究,我得到了代码所缺少的平静:

Stack(const Stack &object){
        tempAdr = object.topElement;
        T * tempMas=new T[object.NumberOfElements];
        for (size_t i = 0; i < object.NumberOfElements; i++){
            tempMas[i] = tempAdr->element;
            tempAdr = tempAdr->prevElement;
        }
        topElement = new Node;
        topElement->prevElement = nullptr;
        NumberOfElements = 0;
        for (int i = object.NumberOfElements - 1; i >= 0; i--){
            push(tempMas[i]);
        }
        delete[] tempMas;
    }

我知道如果没有重载赋值运算符,我的 Stack class 仍然不完整,但至少我的代码运行良好。