OOとゲームプログラミング
■ このスレッドは過去ログ倉庫に格納されています
0239230
01/11/13 21:25ID:???って感じもするな…。
#include <iostream>
class Task;
class TaskManager;
typedef void(Task::*TaskFunc)();
class Task {
friend class TaskManager;
public:
void SetFunc(TaskFunc updateFunc) { m_updateFunc = updateFunc; }
// void Update() { (this->*m_updateFunc)(); }
private:
TaskFunc m_updateFunc;
};
class HogeTask : public Task {
public:
HogeTask() {
SetFunc(static_cast <TaskFunc> (&HogeTask::Func1));
}
void Func1() {
cout << "Func 1\n";
SetFunc(static_cast <TaskFunc> (&HogeTask::Func2));
}
void Func2() { cout << "Func 2\n"; }
void Func3() { cout << "Func 3\n"; }
};
class TaskManager {
Task *taskArray[100];
int iPoint;
public:
TaskManager() { iPoint = 0; }
~TaskManager() {}
void setTask(Task* task) { taskArray[iPoint++] = task; }
void execute(void) {
{for(int i = 0; i < iPoint; i++) {
(taskArray[i]->*(taskArray[i]->m_updateFunc))();
}}
}
};
■ このスレッドは過去ログ倉庫に格納されています