2014-10-27 99 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>(和指向他們)可能會被區別對待由編譯器,因此混合它們是不鼓勵的(你可以強制它,與不安全的常量轉換,但不建議)。