c ++中的2D数组方法 - 数组的声明必须有边界Catch-22

时间:2016-06-02 00:34:12

标签: c++ arrays multidimensional-array scope declaration

我一直在做一个涉及在c ++中旋转方阵的问题。数组的长度在' len'。但是,这些rotate和flip方法返回一个2d数组,需要2d数组参数。编译器给了我这个错误:

错误:宣布' a'因为多维数组必须具有除第一个之外的所有维度的边界。

然而,数组的大小取决于输入 - 当我有输入' len'并声明方法,它给了我未在此范围内声明的旧变量'问题

差不多,我不能说数组的长度,因为它会根据输入而改变。

有没有办法解决这个问题?

#include <iostream>          
#include <fstream>
#include <cmath>

using namespace std;

class transform{
private:
    int len;
public:
    bool rot90[][](bool a[][]);
    bool rot180[][] (bool a[][]);
    bool check (bool a[][], bool b[][]);
    bool rot270[][] (bool a[][]);
    bool flip[][] (bool a[][]);
};

bool transform::check(bool a[len][len], bool b[len][len]){
    for(int h=0; h<len; h++){
        for(int w=0; w<len; w++){
            if(a[h][w] != b[h][w])
                return false;
        }
    }
    return true;
}


bool transform::rot90[len][len] (bool a[len][len]){
    bool[len][len] b;
    for(int h=0; h<len; h++){
        for(int w<0; w<len; w++){
            b[w][len-1-h] = a[h][w];
        }
    }
    return b;
}

bool transform::rot270[len][len] (bool a[len][len]){
    bool[len][len] b;
    for(int h=0; h<len; h++){
        for(int w<0; w<len; w++){
            b[len-1-w][h] = a[h][w];
        }
    }
    return b;
}

bool transform::flip[len][len] (bool a[len][len]){
    bool[len][len] b;
    for(int h=0; h<len; h++){
        for(int w<0; w<len; w++){
            b[h][len-1-w] = a[h][w];
        }
    }
    return b;
}

...代码继续

0 个答案:

没有答案