能够拥有const和非const指针的数组

时间:2014-10-27 23:03:03

标签: c++ const

我正在尝试使用以下代码解决电磁仿真问题。 My Node类有一个成员函数,它接受问题数组,并根据相邻节点进行计算。

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

然后当一个const节点被要求计算一个新值时,由于类声明中的下面的函数定义,它根本什么都不做:

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节点成为常量。

1 个答案:

答案 0 :(得分:1)

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

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

或将您的Node数组声明为

const Node* problem[max_x][max_y];

一般情况下,编译器可能会对const <type><type>(以及指向它们的指针)进行不同的处理,因此不建议将它们混合起来(您可以使用不安全的const转换强制它,但它& #39;不推荐)。