2012-11-12 10 views
7

私は、次のような問題があります。constインスタンスと非constインスタンスに対して異なるcopyCtorを記述できますか?

私はこれを行う必要があるクラスを持っている:

Obj o; 
Obj o1(o), o1=o; // deep-copies 
const Obj c(o), c=o; // deep-copies 
const Obj c1(c), c1=c; // shallow-copies 
Obj o2(c), o2=c; // deep-copies 

は、どのように私は、継承せずに、好ましくは、これを行うことができますか? (私はConst_objがそうでなければObjから継承するだろう意味。)

編集:私は簡単に誤ってないクローニングによってバグを導入する可能性があるため、直接o.clone()を使用して

はオプションではありません。

EDIT:

最後に、スコット・マイヤーズによって効果的なC++からのアイデアを使用して遅延評価と適切な、完全なソリューションがあります。下の私の答えをチェックしてください。

+0

私は、clone()メソッドを追加し、明示的にしたいことが必要かもしれないと思います。 – Caribou

+0

これは私のコードにほとんど追跡可能なバグを書き込まないようにしたいのです。そんなに簡単なのです。 –

+0

まあ、私はそれを静かにやっているのははるかに危険だと思っています - 特にあなたが仕事を移して新しい人が入ると...(私の2ペンス) – Caribou

答えて

関連する問題