class Base {
protected:
void Bind(C * pC);
};

class Derived: public Base {
C c;
public:
Derived(void) { Bind(&c); }
};

class Unko: public Base {
public:
static void Bind(Base & b, C * pC) { b.Bind(pC); }
};

Derived d;
C c;
Unko::Bind(d, &c);

あーあ、protected厨のせいで大事故だよ
friendにしとけばこんなことはなかったのにな