输出错误将类对象动态分配到队列模板

时间:2016-01-17 03:33:13

标签: c++

#include <iostream> 
#include "QueueAr.h"

class Test { 

        int val;
    public: 
        Test(int v) 
        {val = v;};  

        int  getVal() 
        {return val;};  

}; 

using namespace std; 
int main(int argc, char **argv) 
{ 

    Queue<Test*> testStack(4); 

    for(int i = 0; i < 4; i++) { 
        Test *t = new Test(5); 
        testStack.enqueue(t); 
        delete t; 
    } 

    while(!testStack.isEmpty()) 
        cout << (testStack.dequeue())->getVal()  << endl;


return 0; 
} 

因此,我尝试使用程序员定义的数据类型声明模板类。我决定将我的数据结构书作者的队列实现作为模板类。

现在我尝试将一些值输入其中。

我首先创建了一个Queue对象,其数据类型是我自己的类Test的指针变量。我使用了指针变量,因为Queue<Test>由于某种原因没有正常工作。接下来,我想出了上面的for循环以尝试初始化,但是当我出列并显示值时,它将所有值都返回为零,尽管在循环中向Test的构造函数发送了4次。我相信它可能与循环或Test *有关,但我并不完全确定。

有谁知道这里可能有什么问题?先感谢您。

此外,如果有人需要它,这里是头文件的链接&#34; QueueAr.h&#34;及其成员职能

https://github.com/rweichler/ecs60/blob/master/p2/src/QueueAr.h

https://github.com/rweichler/ecs60/blob/master/p2/src/QueueAr.cpp

1 个答案:

答案 0 :(得分:1)

将指针存储到Test中的Queue后,删除指针。这释放了内存,并将指针存储在Queue悬空中,指向释放的内存。当您取消引用此指针以显示该值时,您可以获得任何内容。