2014-10-27 47 views
0

我试图用下面的代码解决电磁仿真问题。我的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节点不是const。

回答

1

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

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

或声明的节点阵列作为

const Node* problem[max_x][max_y]; 

一般来说,const <type><type>(和指向他们)可能会被区别对待由编译器,因此混合它们是不鼓励的(你可以强制它,与不安全的常量转换,但不建议)。