You should look toward inheritance and virtual functions.
Code might look like
class Base
{
    virtual void f() = 0;
};
class A : public Base
{
    virtual void f()
    {
        //class A realization of f
    }
};
class B : public Base
{
    virtual void f()
    {
        //class B realization of f
    }
};
And then you can do this
Base* VARIABLE = 0;
if (*condition*)
{
   VARIABLE = new A();
}
else
{
   VARIABLE = new B();
}
VARIABLE->f();
But it not always a good idea to use inheritance and virtual functions. Your classes A and B should have something in common, at least the meaning of function f().