クラスをコピー不可能にすると、コード品質が向上します。最初はboost :: noncopyableでこれを行いましたが、私はVC++コンパイラのエラーがプライベートメンバーと同じように役に立たないことを発見しました(コード内の間違った場所へのダブルクリック)。C++ノンコピー可能な場合を除いて
T(T const&);
T& operator=(T const&);
確かに、それはなかったクラスは、彼らが持っている必要があり、参照として渡されていなかったかなりの数の例に私を警告しています。そういうわけで、クラスを一度だけコピーする必要があるクラスでも、私は非常に警告を受けたいと思っています。
これを行うには良い方法がありますか?私は、上記の2つのメソッドをプライベートにし、パブリックT(T const &、ブールダミー)コンストラクタを追加して、実際にコンストラクトをコピーしたいときに呼び出す例を考えていました。または、代わりに、上記の2つのメソッドをpublicにして、コピーの作成時にコンパイラの警告を何らかの形でアクティブにし、私がしたいところで警告を抑制します。
多分もっと良い方法がありますか?
私はこの答えが一番好きです。私の経験では、コピーコンストラクタの問題は、いくつかの大きなオブジェクトで "偶然"呼び出されるときです。 '明示的に'は、あなたが呼び出すときにそれについて考えるように強制します。 – Nemo
乾杯、これは私のニーズに完全に合っています。ありがとう。 – Cookie