同时具有常量指针和非常量指针数组的能力

Ability to have an array of both const and non const pointers

本文关键字:常量 指针 数组 能力 非常      更新时间:2023-10-16

我正试图用下面的代码解决电磁模拟问题。My Node类有一个成员函数,它接受问题数组,并基于相邻节点进行计算。

我们有一些约束,为了实现它们,我将这些节点创建为const。例如,x+和y+边保持在100。

然后,当constNode被要求计算一个新值时,它什么也不做,这要归功于类声明中的以下函数定义:

void iteration( Node* array);
void iteration( const Node* array) const;

代码的其余部分如下所示:

#include "node.h"

int main () {
    int max_x = 10;
    int max_y = 10;
    Node* problem[max_x][max_y];
    int i, j;
    for (i = 0; i < max_x; i++) {
        for (j = 0; j < max_y; j++) {
            if ((i == max_x) || (j == max_y)) {
                problem[i][j] = new const Node(i, j, 100);
            }
        }
    }
    return 0;
}

我是不是搞错了?我得到的错误是:

assigning Node * from incompatible type const Node *.

很明显,因为我不能使const节点不是const。

您应该从新节点声明中删除const

problem[i][j] = new Node(i, j, 100);

或将节点阵列声明为

const Node* problem[max_x][max_y];

通常,编译器可能会对const <type><type>(以及指向它们的指针)进行不同的处理,因此不鼓励将它们混合在一起(您可以使用不安全的const强制转换,但不建议这样做)。