帮忙看下这个简单问题

asuccessa 2009-02-20 10:59:40
#include <iostream.h>

class Screen {
public:
typedef Screen& (Screen::*Action)();
static Action Menu[];
/* Action Menu[];
Screen() {
Menu[] = { &Screen::home, &Screen::forward, &Screen::back, &Screen::up, &Screen::down };
}*/
Screen& home(){return *this;}
Screen& forward(){return *this;}
Screen& back(){return *this;}
Screen& down(){return *this;}
Screen& up(){return *this;}

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]) ();
return *this;
}

void main()
{
}

请问为什么static Action Menu[]要为静态的,声明为Action Menu[]怎么出现错误了?
...全文
128 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
太乙 2009-02-21
  • 打赏
  • 举报
回复
请问为什么static Action Menu[]要为静态的,声明为Action Menu[]怎么出现错误了?


简单的说,静态的能知道大小,非静态的数组成员,不知道大小

如果像1l说的,给数组一个大小,知道数组大小,就知道该数据成员大小,所以能通过
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hqin6 的回复:]
C/C++ code请问为什么static Action Menu[]要为静态的,声明为Action Menu[]怎么出现错误了?


简单的说,静态的能知道大小,非静态的数组成员,不知道大小

如果像1l说的,给数组一个大小,知道数组大小,就知道该数据成员大小,所以能通过
[/Quote]
说的好,楼主可以区看看这个帖。
http://hi.baidu.com/wangyu_nick/blog/item/ffd38f1fabc908f3e1fe0b40.html
ysysbaobei 2009-02-21
  • 打赏
  • 举报
回复
waizqfor 2009-02-20
  • 打赏
  • 举报
回复
[Quote=引用楼主 asuccessa 的帖子:]
#include <iostream.h>

class Screen {
public:
typedef Screen& (Screen::*Action)();
static Action Menu[];
/* Action Menu[];
Screen() {
Menu[] = { &Screen::home, &Screen::forward, &Screen::back, &Screen::up, &Screen::down };
}*/
Screen& home(){return *this;}
Screen& forward(){return *this;}
Screen& back(){return *this;}
Screen& down(){return *this;}
Screen& up(){return *…
[/Quote]
LZ看看静态成员函数的使用方法吧 声明什么的
http://topic.csdn.net/u/20090214/22/3f6bae8b-df3c-4675-9b90-f06bfe467694.htmlLZ看看评论
feng4206yu 2009-02-20
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
class Screen {
public:
typedef Screen& (Screen::*Action)();
Action Menu[5];
// Action Menu[];
Screen()
{
Menu[0] = &Screen::home;
Menu[1] = &Screen::forward;
Menu[2] = &Screen::back;
Menu[3] = &Screen::up;
Menu[4] = &Screen::down;
}
Screen& home(){return *this;}
Screen& forward(){return *this;}
Screen& back(){return *this;}
Screen& down(){return *this;}
Screen& up(){return *this;}

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]) ();
return *this;
}

void main()
{
}

这样可以通过编译....

65,211

社区成员

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

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