class Base {
public: void f() { cout << "Base method." << endl; }};

class Sub : public Base {
public: void g() { cout << "Sub method." << endl; }};

int main() {
 Base *b = new Sub;
 b->f();

 b = (Sub*)b;
 b->g(); // コンパイルエラー Base::g()は無い
 // ((Sub*)b)->g(); ok。でも面倒

return 0;
}

Subクラスに存在するgを呼びたいのですが、ダウンキャストってどーやるんですか?
b = (Sub*)b; じゃだめなんですか?