pure virtual member を作らずに、抽象クラスを定義できますか?

いまのところ 下の様に代用しています。
class A の foo を宣言するのが面倒なのです。
ちなみに
   A のインスタンスを持ちたい時は A を継承したクラスを定義しなさい
   A を継承する時は必ず B も同時に継承しなさい
ってことを書いてみようと思います。

class A
{
private:
virtual void foo() = 0; // ←邪魔な感じ
};

class B
{
public:
virtual void foo() = 0;
}

class AB : public A, B
{
public:
virtual void foo(){}
};