几个问题,help
程序的基本需求:设计一个机器人,他拥有一支笔,笔有上下两个方向,机器人在
n×m的方格内移动,如果笔朝下,则他走过的相应的方格上留下记号,否则没有。
程序一开始运行时,显示一个菜单,给用户选择相应的操作(console程序),菜单如下:
1。set pen up
2. set pen down
3. turn left
4. turn right
5. print floor
6. move
7. exit
turn left和turn right即调整机器人的方向,print floor则打印所有方格,若有记号则表示为[-],否则为[ ],move即移动机器人
我的实现中包含一个Robot类,表示机器人,处理如set pen up和turn left,move的操作;一个Menu类,用来处理菜单相关的工作
现有几个问题如下:
1。方格打算用一个类Floor来实现,定义如下
class Floor
{
public:
Floor(int row, int col): Row(row), Column(col), ???? {}
void printfloor();
private:
int Row;
int Column;
bool ground[Row][Column]; // 打算用一个bool的二维数组来表示n×m
的方格,画上记号的方格为true,否则为false,n和m分别为此Floor类的Row和Column的值,但这样定义无法通过编译,而且也无法初始化
问题:这样的实现无法工作,该怎样修改此Floor类,N×M的方格又应该如何表示呢?(每次运行n和m可以由用户指定)二维数组好像无法接受两个变量来做维数
如果不用Floor类(或许我的设计不合理),那又该怎么做呢?
2。此程序还有一个Menu类,定义如下:
class Menu
{
public:
void DisplayMenu(); //显示菜单选项
void ProcessMenuChoice(); //处理菜单的各项功能
......
问题:ProcessMenuChoice函数原打算定义如下:
void Menu::ProcessMenuChoice()
{
char choice='';
cout<<"please enter a choice:";
cin>>choice;
switch(choice)
{
case '1': Robot::SetPenUp(); //1
break;
case '2': Robot::SetPenDown(); //2
break;
.......
}
但无法通过编译,1和2处均报错
但若将上述函数变为:
void Menu::ProcessMenuChoice(Robot& robot)
{
char choice='';
cout<<"please enter a choice:";
cin>>choice;
switch(choice)
{
case '1': robot.SetPenUp(); //1
break;
case '2': robot.SetPenDown(); //2
break;
.......
}
就ok了,why??
盼解答,感谢