ほれ、パラメータ、関数の追加もいらないしコードレベルの移植性も完璧だぜ
virtual void update(void)の完全勝利ですわ^^

class entity
{
float x_, y_, z_, v_;
public:
virtual void update(void) = 0;
void get_pos(float *x, float *y, float *z) { /*(ry*/ }
void move(float dx, float dy, float dz) { /*(ry*/ }
};

class homing : public entity
{
shared_ptr<entity> target_;
public:
homing(shared_ptr<entity> target) : target_(target) {}
void update(void) {
float x, y, z;
target_->get_pos(&x, &y, &z);
float dx, dy, dz;
//sabun keisan (ry
move(dx, dy, dz);
}
};