gpt4 book ai didi

c++ - 将类对象动态分配到队列模板中时输出错误

转载 作者:行者123 更新时间:2023-11-28 05:52:57 26 4
gpt4 key购买 nike

#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 循环来尝试初始化,但是当我出队并显示值时,它会将所有值都返回为零,尽管在循环中四次将 5 发送到 Test 的构造函数。我相信它可能与循环或测试*有关,但我不完全确定。

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

此外,如果有人需要,这里是头文件“QueueAr.h”及其成员函数的链接

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

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

最佳答案

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

关于c++ - 将类对象动态分配到队列模板中时输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34834824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com