2
int main (void)
{
    int** arr = new int*[4];
    for (int i = 0; i < 4; i++) arr[i] = new int[4] {1, 0, 0, 1};

    const int* p = &(arr[0][0]);

    TFigure* test = new TFigure(arr, 4, 4);
    test->resolve();

    for (int i = 0; i < 4; i++) delete[] arr[i];
    delete[] arr;

    return 0;
}

コンストラクター宣言は 57 行目です。

TFigure(int **ia, int n, int m)
    N = n;
    M =m;

    landscape = new int*[n];
    puddles = new int*[n];
    for (int i = 0; i < n; i++){
        landscape[i] = new int[m];
        puddles[i] = new int[n];
        for (int j = 0; j < m; j++)
            landscape[i][j] = *ia[i][j];
        }


    for (int i = 0; i < n; i++)
        for (int j = 0; j < 0; j++)
            if (i == 0 || i == N || j == 0 || j == M)
                puddles[i][j] = 0;
            else
                puddles[i][j] = 1;

    for (int i = 0; i < N; i++){
    for (int j = 0; j < M; j++)
    std::cout << puddles[i][j] << ' ';
    std::cout << std::endl;
    }
    for (int i = 0; i < N; i++){
    for (int j = 0; j < M; j++)
    std::cout << landscape[i][j] << ' ';
    std::cout << std::endl;
    }


};

しかし、私はエラーがあります

57:43: エラー: 単項の型引数が無効です«*»(have «int»)

何が原因なのかわかりません。

4

1 に答える 1

2

問題は次の行にあります。

landscape[i][j] = *ia[i][j];

ia[i][j]は、int逆参照しようとする を提供します。あなたが本当に望んでいるようです:

landscape[i][j] = ia[i][j];

これがコピー アンド ペーストの間違いだったのかどうかはわかりませんが、コンストラクターの定義に Opening がありません{

TFigure(int **ia, int n, int m) {
//                         Here ^
于 2013-03-09T12:13:42.170 に答える