求问一个关于C++虚函数的有关问题

求问一个关于C++虚函数的问题
因为C++没有接口嘛,本来寻思写两个类,代替接口使用,不过有个问题,求教一下

class A
{
public:
    A(void){};
   virtual ~A(void);

   virtual void SetA();
}

classB
{
public:
   B(void){};
  virtual ~B(void);

  virtual A GetA();    //当两个类放到同一个文件的时候,这里报错
}

当我把两个类放到同一个b.h的头文件中定义的时候,VS2012就会报错,C2259,不能实例化抽象类。
但是当我把两个类分别放到A.h和B.h中的时候,就不报这个错了。。。这是为什么?对程序有影响么?

因为之前一直都是搞C#开发,对C++不是很熟悉。本来只是想想C#定义一下接口,现在出现这个问题,着实不太理解。求给位大侠帮帮忙!
------解决方案--------------------
virtual A* GetA();