没有用于调用'maps :: size(char [20],char&)'的匹配函数,但我认为我的方法是

时间:2018-02-15 19:58:33

标签: c++

class maps{

public:

    int rows;
    int cols;
    void size(char **lvl, char corner);

private:

};

void maps::size(char **lvl, char corner){
    for(int c=0; *lvl[c]!=corner; c++){
        cols=c;
    }
    for (int r=0; *lvl[r * cols + 1]!=corner; r++){
         cols=r;
    }
}

int main(int argc, char** argv) {
char w = 189; //wall
char e = 122; //entity
char y = 206; //you
char s = ' '; //space
char c = 188; //corner
control control_you;
maps map_level;
char lvl1[10][20]={{w, w, w, w, w, w, w, w, w, w, w, w, w, w, w, w, w, w, w, c},
                   {w, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, w},
                   {w, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, w},
                   {w, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, w},
                   {w, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, w},
                   {w, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, w},
                   {w, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, w},
                   {w, s, e, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, w},
                   {w, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, s, y, w},
                   {c, w, w, w, w, w, w, w, w, w, w, w, w, w, w, w, w, w, w, w}};
map_level.size(*lvl1, c);
    return 0;
 }
  

Bloc [错误]没有匹配函数来调用'maps :: size(char [20],char&)

我不知道为什么它找不到我的功能,你能帮帮我吗? 我不知道我是否在课堂上的功能调用中做错了什么,或者我很绝望,请帮助我。谢谢。

1 个答案:

答案 0 :(得分:0)

我会使用EXTRA_CHANNEL_ID,但按照您的方式进行,我会更改std::vector<std::vector<char>>方法,如下所示:

size()

其中void size(char* lvl, char corner){ rows = 0; cols = 0; for (int c=0; lvl[c] != corner; c++){ ++cols; } ++cols; // count the corner for (int r=0; lvl[r * cols] != corner; r++){ ++rows; } ++rows; // count the corner } colsrows相同,包括角落希望在适当的地方有角落。

并称之为:

lvl1

Demo

How are multi-dimensional arrays formatted in memory?