You are missing semicolons ;
after class definitions:
class A {};
class B : public A {};
Also for dynamic_cast
to return a meaningful result you need at least one virtual method in A. You need to have virtual destructor in a polymorphic base class for destruction to work correctly anyway:
class A {
public:
virtual ~A() {}
};