2015-09-25 90 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