2015-09-25 88 views
-1

您好我正在創建一個Matrix對象,它是一個int[3][3]的遏制者。返回一個整數矩陣

我想添加一個get_matrix()函數,它返回對象本身或指針,但我無法。 日食說:

類型不能轉換 'INT(*)[3] [3]' 到 'INT **'

enter code here 
class Matrix 
{ 
    private: 
    int matrix[3][3]; 

    public: 

    void set_matrix() 
    { 
     int c, d; 
     printf("Enter the elements of first matrix1\n"); 

     for (c = 0; c < n_rows; c++) 
     for (d = 0; d < n_column; d++) 
      scanf("%d", &matrix[c][d]); 
    } 

    int get_matrix(){ 
     return matrix; 
    } 

    void output_matrix() 
    { 
     int c, d; 
     for (c = 0; c < n_rows; c++) { 
      printf("\n"); 
      for (d = 0; d < n_column; d++) 
      printf("%d\t", matrix[c][d]); 
     } 
    } 
}; 
+0

使用C++容器來代替矩陣而不是C數組或指針。 –

回答

0

試試這個:

int **get_matrix() const { 
    return reinterpret_cast<int **>(matrix); 
} 

或者這個:

int **get_matrix() const { 
    return (int **) matrix; 
} 

二維陣列不能將隱式轉換爲指向指向int的指針,但兩者之間有若干相似之處。但是,您可以強制轉換爲int **

你也可以(也可能應該)使用容易獲得的C++容器,而不是試圖重新發明輪子。

+0

你應該嘗試編譯它。 – juanchopanza

+0

這會告訴你一個數組*的數組*不能*被隱式轉換爲指向指針的指針。見[這裏](http://ideone.com/tkr71v)。 – juanchopanza

+0

@juanchopanza - 我明白。該代碼是我的頭頂。我更新了兩個沒有警告或錯誤編譯的例子。 – owacoder