(続き)
最後にSceneと統合すると
 SceneXXX::update(void) { ←タスクはシーンだけ
   foreach t (teki) {
     if (jiki.hit_check(t.get_hit_area())) {
       jiki.set_hp(jiki.get_hp() - t.get_attack_point());
     }
   }
   foreach t (teki_tama) {
     if (jiki.hit_check(t.get_hit_area())) {
       jiki.set_hp(jiki.get_hp() - t.get_attack_point());
     }
   }
   ...
 }
こうなる。
Scene::update(void) は >>886 >>887 みたいなやり方で実装するのはアリ。
というかむしろそうしないと確かに「ド素人くさい」。ただそれはSceneにおいての話。

ゲームオブジェクトはSceneとは別枠で扱うべき。つまりゲームオブジェクトはタスクにすべきでない。
理由はゲームオブジェクト間は通信が多いので引数渡しを使用可能としたいため。
タスクでは引数渡しができないのが嫌。

私がupdate()で引数扱えるようにした方がいいって思ってるのはゲームオブジェクトについての話。
ただ、update()という名前で引数を扱うのはタスクシステムを脱出する過程で現れる過渡的、一時的な姿。
複数のメソッドに分割された後はupdate()なんて名前は消えてなくなる(たまたま別の意味付けで残ることはありえるけど)。

Sceneはタスクで良いのでupdate(void)で構わないが、
ゲームオブジェクトはタスクにすべきではないので(過渡的な姿という意味で)update(jiki,teki,tama,unko); が良い。