少し長いので大分省略して書きますが、
class Base{
friend class Hoge;
protected:
virtual void Draw(引数);
};

class A:public Base{
friend class Hoge;
private:
void Draw(引数);
あといくつかの関数と変数
};

class Hoge{
public:
A a[64];
Base *base[256];
};

みたいなかんじで書いて
Hogeのなかで

base[0]=&a[0];

と、したときに
base[0]のvfptrがNULLになってしまい
Drawを呼べなくなってしまいます
解決法をご教授願います