タスクシステム総合スレ part3
■ このスレッドは過去ログ倉庫に格納されています
0559名前は開発中のものです。
2009/01/13(火) 13:28:07ID:IILw8mY9なんで答えてることを無視して同じ質問するの?
C++を知らないのかな? もう一回だけ説明するよ。
これでわからなければC++の入門サイトでも見てくれ。
リストから取り出す必要があるなら、何度も言うようにdynamic_castな。
void update(TaskManager &tm) {
ClassB *b = dynamic_cast<ClassB *>(tm.getTask("ClassB"));
if(b) b->moveB();
}
>たとえばクラスAとBがあったときクラスBだけがもつmoveBメソッドを呼びたかったと
で、こういう場合、クラスBとそれを使うクラスの間には何らかの関係があるわけだから、
クラスB(へのポインタ)を、『タスクリストに追加する前に』、それを必要とするクラスのメンバ変数にするんだよ。
class Hoge : public Task {
private:
ClassB *b;
protected:
void update(TaskManager &tm) {
if(!b) {
b = new ClassB();
tm.addTask(b);
}
b->moveB();
}
};
bの初期化のタイミング(Hogeのコンストラクタか、updateを最初に呼ばれたときか、
別にinit関数を作るか……)は好きにしてくれ。
以降のレスは呼んでる暇がないので、既にフォローされてたらごめん。
■ このスレッドは過去ログ倉庫に格納されています