>>383
class Task {
public:
Task();
~Task();

  virtual void exec() = 0;

  static void* operator new(size_t);
  static void operator delete(void *);

private:
int m_Status;
};

とやって、

class TaskBackground : public Task
{
public:
enum {
STAT_INIT,
STAT_APPEAR,
STAT_STAY,
STAT_DISAPPEAR,
};
  virtual void exec(void) { (this->*apfnTable[m_Status])(void); }
private:
static void (TaskBackground::*apfnTable[])(void);
};

と言う感じ。STLの無い環境だったのでSTLは使ってませんでしたが、基本的には
同じ方式です(よね?)