帮忙解决一个简单问题

asuccessa 2009-02-20 08:48:17
#include <iostream.h>

class Screen {
public:
//typedef Screen& (Screen::*Action) ();
typedef Screen& (*Action) ();
int Screen::*pi;
int i;
Action Menu[];
Screen() {
Menu[] = { &home, &forward, &back, &up, &down };
pi=&i;
}
Screen& home();
Screen& forward();
Screen& back();
Screen& down();
Screen& up();
public:
enum Directions { HOME, FORWARD, BACK, UP, DOWN };
Screen& move(Directions);
};



Screen& Screen::move(Directions cm)
{
// (this->*Menu[cm]) ();
Menu[cm] ();
return *this;
}

void main()
{
int Screen::*pm = &Screen::i;
Screen s;
}

想请大家帮忙看一下上面的代码哪出错了,然后想请教一下大家类成员指针是干什么用的,一般在什么时候用?
...全文
73 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng4206yu 2009-02-20
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

class Screen {
public:
typedef Screen& (Screen::*Action) ();
// typedef Screen& (*Action) ();
// int Screen::*pi;
// int i;
Screen& home() {cout<<"home"<<endl; return *this;};
Screen& forward() {cout<<"forward"<<endl; return *this;};
Screen& back() {cout<<"back"<<endl; return *this;};
Screen& down() {cout<<"down"<<endl; return *this;};
Screen& up() {cout<<"up"<<endl; return *this;};

static Action Menu[5];
Screen()
{
// Menu[0] = &home;
// Menu[1] = &forward;
// Menu[2] = &back;
// Menu[3] = &up;
// Menu[4] = &down;
// pi=&i;
}

public:
enum Directions { HOME, FORWARD, BACK, UP, DOWN };
Screen& move(Directions);
};

Screen::Action Screen::Menu[] = {&Screen::home, &Screen::forward, &Screen::back,
&Screen::up, &Screen::down};


Screen& Screen::move(Directions cm)
{
(this->*Menu[cm]) ();
// Menu[cm] ();
return *this;
}

int main()
{
// int Screen::*pm = &Screen::i;
Screen s;
s.move(Screen::HOME);
s.move(Screen::UP);
return 0;
}
waizqfor 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 asuccessa 的帖子:]
#include <iostream.h>

class Screen {
public:
//typedef Screen& (Screen::*Action) ();
typedef Screen& (*Action) ();
int Screen::*pi;
int i;
Action Menu[];
Screen() {
Menu[] = { &home, &forward, &back, &up, &down };
pi=&i;
}
Screen& home();
Screen& forward();
Screen& back();
Screen& down();
Screen& up();
public:
enum Directions { HOME, FORWARD, BACK, UP, DOWN …
[/Quote]
http://www.diybl.com/course/3_program/c++/cppsl/20071119/86994.html
LZ仔细看看指向类成员的指针吧 代码里错误很多 比如Menu[] = { &home, &forward, &back, &up, &down }; 这个赋值就错了
还有Action 的声明等等 先熟悉下语法吧

65,211

社区成员

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

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