class A : boost::noncopyable{
};
class B{
A & conn() const;
};
どのように宣言していることを与えられたCONN()を実装します:返す参照
- connは作成して
- 私は壊すことができないタイプAのオブジェクトへの参照を返す必要がありますBを使用してクライアントコード内のBのインターフェイス。
- 私はコードがメモリをリークするのを防ぎたいので、単にヒープ内のオブジェクトへの参照を に返すことはできません。
タイプA *への変換がないので、クライアントコードを破らないスマートポインタの実装が見つかりませんでした。クライアントコードをそのまま残しておけば、メモリリークが発生します。敬具
、
なぜリファレンスを返すのですか?また、私はあなたがスマートポインタについて何を意味するのかよく分かりません。あなたはどこで 'A *'に変換する必要がありますか? –
conn()は呼び出されるたびに新しいインスタンスを作成する必要がありますか? – juanchopanza
@juanchopanza:yes – user311174