gpt4 book ai didi

c++ - 通过引用 vector 传递给出错误的结果

转载 作者:搜寻专家 更新时间:2023-10-31 01:40:38 26 4
gpt4 key购买 nike

所以我想通过调用构造函数创建一个节点列表,并将节点的地址推送到一个 vector (已通过引用传递)。我从下面的代码中得到了错误的结果。

#include <iostream>
#include <vector>

using namespace std;

class Node{
public:
//Constructor
Node(int id, vector<Node*> & listNode){
this->id = id;
listNode.push_back(this);
}
int id;
};

int main(){
vector<Node*> listNode;

for(int i=0; i<5; i++){
Node A(i, listNode);
}

for(int i=0; i<5; i++){
cout<<listNode[i]->id;
}
}

我期待的输出是:01234
但我得到的是 44444。
有没有想过这个错误?

最佳答案

for(int i=0; i<5; i++){
Node A(i, listNode);
}

A 作用于for 循环,当for 结束时,A 被销毁。 listNode 包含悬垂指针列表。

您的代码只有未定义的行为

增强代码:

class Node{
public:
//Constructor
Node(int id){
this->id = id;
}
int id;
};

vector<Node> listNode;

for(int i=0; i<5; i++){
listNode.push_back(A(i));
}

关于c++ - 通过引用 vector 传递给出错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29505653/

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