クラスBのオブジェクトへの参照をメンバとして持つクラスAを持っています。クラスBのコピーコンストラクタ(および代入演算子)はprivateです。 をAのデフォルトのコピーコンストラクタとして使用することは有効で良い考えだと思いますか(実際には、タイプAのオブジェクトを何種類かのSTLコンテナに格納できる機能が必要です。そして、コピー能力。)今までコピー可能なメンバ参照を含むクラスのコピーコンストラクタ
class A
{
private:
B& b_;
public:
A(B& b) : b_(b){}
}
、上記の方法に異議がある私の知識では、以下が、私のデザインはそれに直面していません。 BタイプBの元のオブジェクトが破壊されたとき、私は...上記の例に関するいくつかの問題/問題/問題があるかどうかを知るために
- のみ参照がコピーされ、したがって、そこであろう問題を希望します。 (bはスコープ全体で利用可能であるため、適用されません)
- Aのすべてのインスタンスに固有のb_ですか? (いいえ、Bはスコープ内で実際にインスタンス化されるので、シングルトンクラスの効果があります)
その他の問題がある場合は、ここにリストしてください。私は明示的に定義されたコピーコンストラクタに熱心ではありませんが、私はそれに向かってオープンな心を保っています。
'A'はデフォルトコンストラクタブルではないため、標準コンテナでは使用できません。 –
すべてのstlコンテナで使用するには、デフォルトコンストラクタブルである必要はありません。あなたはc配列のためのデフォルトコンストラクタが必要です –
@Alessandro:非常に興味深い、私はいつもそれが要件だと思った! C++ 0xでその変更が行われたのですか、それともいつもそうでしたか? (つまり、OPの 'A'はコンストラクタブルなのでコピーできないので、標準コンテナでは使用できません) –