几个问题,help

showgood21 2003-10-12 05:44:39
程序的基本需求:设计一个机器人,他拥有一支笔,笔有上下两个方向,机器人在
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??
盼解答,感谢
...全文
22 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
showgood21 2003-10-20
  • 打赏
  • 举报
回复
呵呵,thanks
Wolf0403 2003-10-15
  • 打赏
  • 举报
回复
template <template _Ty>
应该是 template <typename _Ty> ,失手。
operator() 需要 x, y 的范围检查
Wolf0403 2003-10-15
  • 打赏
  • 举报
回复
template <template _Ty>
struct Array2D
{
Array2D(int _height, int _width):m_height(_height), m_width(_width), mp_data(new _Ty[_height * _width]){assert(mp_data);}
~Array2D(){delete mp_data;}
_Ty& operator()(int x, int y)
{
return *(mp_data + m_height * (y - 1) + x - 1);// 试试吧,没调试
}
private:
int m_height;
int m_width;
_Ty * mp_data;
};

用一个 Array2D<bool> 来表示棋盘吧。
showgood21 2003-10-15
  • 打赏
  • 举报
回复
第二个问题understand,谁能讲讲第一个问题?
ogre 2003-10-13
  • 打赏
  • 举报
回复
Robot::SetPenUp();

Robot::SetPenUp() 这些不是 static 函数?

不是,是普通的成员函数

老兄,你应该好好学学C++的语法知识!!普通的成员函数能这样用吗??无语!
showgood21 2003-10-12
  • 打赏
  • 举报
回复
不是,是普通的成员函数
Wolf0403 2003-10-12
  • 打赏
  • 举报
回复
Robot::SetPenUp() 这些不是 static 函数?

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧