65,211
社区成员
发帖
与我相关
我的任务
分享请问为什么static Action Menu[]要为静态的,声明为Action Menu[]怎么出现错误了?
简单的说,静态的能知道大小,非静态的数组成员,不知道大小
如果像1l说的,给数组一个大小,知道数组大小,就知道该数据成员大小,所以能通过
#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()
{
}