ナマポで返して使う側がスマポを外から付け加えてやればいいだけ何度も言わせんな

obj *obj::clone(); // クラス製作者が書くべきコード
//利用者が書くべきコード
spobj create(...) { return spobj(new obj(...)); }
spobj clone(spobj p) { return spobj(p->clone()); }

当然テンプレートを使って楽していいぞ