我试图创建一个指向节点的指针的向量,其中每个节点在列表中存储指向前一个节点的指针。

我编写了一个小型测试程序,以查看是否可以在上一个对象中访问我所调用的对象中的变量gscore。

#include <iostream>
#include <vector>

using namespace std;

struct Node
{
    Node(int gscore1)
    {
        gscore = gscore1;
    }

    Node *previous;
    int gscore;
};

int main()
{
    std::vector<Node*> nodeVec;

    Node *tempnode;
    tempnode = new Node(10);
    Node *tempnode2;
    tempnode = new Node(11);

    nodeVec.push_back(tempnode);
    nodeVec.push_back(tempnode2);

    nodeVec[1]->previous = tempnode;

    cout << nodeVec[1]->previous->gscore << endl;

    return 0;
}


但是,这会导致崩溃。正确的方法是什么?

最佳答案

您永远不会初始化tempnode2。您初始化tempnode两次。

int main()
{
    std::vector<Node*> nodeVec;

    Node *tempnode;
    tempnode = new Node(10);
    Node *tempnode2;
    tempnode2 = new Node(11); // <<---- HERE

    nodeVec.push_back(tempnode);
    nodeVec.push_back(tempnode2);

    nodeVec[1]->previous = tempnode;

    cout << nodeVec[1]->previous->gscore << endl;

    return 0;
}

07-28 00:21