【问题标题】:C++ array of pointers to structures指向结构的指针的 C++ 数组
【发布时间】:2011-05-01 17:23:31
【问题描述】:

我有一个程序必须找到最短路径(Dijkstra 算法),我决定使用指向结构的指针数组,但我不断收到此错误:

在函数‘void insertNode(Node**, int)’ 中:
TDA.cpp:14: 错误:无法在赋值中将‘Node**’ 转换为‘int*’

这是我的代码:

struct Node{int distance, newDistance;};
int *pointerArray[20];

void insertNode(Node **n, int i)
{
    pointerArray[i] = &(*n);
}

Node *createNode(int localDistance)
{
    Node *newNode;
    newNode = new Node;
    newNode->distance = localDistance;
    newNode->newDistance = 0;

    return newNode;
}

int main()
{
    Node *n;
    int random_dist = 0;
    int i;

    for(i=0; i<20; i++)
    {
        if (i==0)
        {
            n = createNode(0);
            cout << n->distance << " distance " << i << endl;
        }
        else
        {
            random_dist = rand()%20 + 1;
            n = createNode(random_dist);
            cout << n->distance << " distance " << i << endl;
            insertNode(&n, i);
        }
    }
    return 0;
}

我做错了什么?

【问题讨论】:

    标签: c++ algorithm pointers structure dijkstra


    【解决方案1】:

    你正在......试图分配一个指向 int 的指针。你不能那样做。

    int *pointerArray[20];
    

    应该是

    Node *pointerArray[20];
    

    但是,当你这样做时:

    pointerArray[i]=&(*n);
    

    你正在这样做:

    pointerArray[i] = n;
    

    这就是你的意思吗?你说你想使用一个“指向结构的指针数组”。你在这里传递一个指向指针的指针,并试图存储它。

    void insertNode(Node *n,int i)
    {
        pointerArray[i] = n;
    }
    

    将节点指针存储在数组中。

    【讨论】:

      【解决方案2】:

      您将pointerarray 声明为int*[] 类型。您希望它输入Node*[]

      【讨论】:

        猜你喜欢
        • 2013-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-03
        • 2012-07-16
        相关资源
        最近更新 更多