#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
答案 0 :(得分:1)
将指针存储到Test
中的Queue
后,删除指针。这释放了内存,并将指针存储在Queue
悬空中,指向释放的内存。当您取消引用此指针以显示该值时,您可以获得任何内容。