Да. Вам также необходимо реализовать деструктор:
class A {
public:
virtual ~A() = 0;
};
inline A::~A() { }
должно хватить.
И так как это получило отрицательный голос, я должен уточнить: если вы извлечете что-то из A, а затем попытаетесь удалить или уничтожить это, в конечном итоге будет вызван деструктор A
. Поскольку он чистый и не имеет реализации, возникнет неопределенное поведение. На одной популярной платформе это вызовет обработчик purecall и вылетит.
Редактировать: исправление объявления, чтобы оно было более совместимым, скомпилировано с http://www.comeaucomputing.com/tryitout/