質問です
IHoge *p1 = new CHoge();
IHoge *p2;

CHogeはIHogeを継承したもので、メンバ変数が追加されています。
p1の「内容」をp2にコピーするにはどうしたらよいでしょうか?

p2 = p1; のように、ポインタをコピーするのではなく、独立したクローンを作りたいのです。

今のところvirtual IHoge *clone()=0; をIHogeに用意しておき、継承したクラスにオーバーライドを強要する。
くらいしか思いつかないのですが、なにぶん数が増えてきますと実装ミスがおきそうです。
(clone内でコピーすべきメンバ変数のコピーを書き忘れるとか)