ソースを制御できないクラスのインスタンスへの参照を返す関数がある場合は、次のように言いますlist<int>
。
list<int>& f();
その値が別の参照にのみ割り当てられるようにしたい。
list<int> &a_list = f();
ユーザーが代わりに行う場合:
list<int> a_list = f(); // note: no '&', so the list is copied
ユーザーは元のリストではなく、リストのコピーのみを操作するため、コンパイル時のエラーにしたいと考えています (これは、アプリケーションで意図されている/求められているものではありません)。
上記のコピー構築と割り当てを防ぐ方法はありますか (ある種の「ラッパー」クラスを介して)。
理想的には、ラッパー クラスを使用する場合、たとえばwrapper<T>
、任意のタイプのオブジェクトに対して機能するようにしたいと考えていますT
。
はい、私が制御できるクラスの場合、コピーコンストラクターと代入演算子を次のように単純に作成できることを知っています。private
class MyClass {
public:
// ...
private:
MyClass( MyClass const& );
MyClass operator=( MyClass const& );
};
コピー構築と割り当てを禁止する。std::list
しかし、上記のように、たとえば、単純にコピーコンストラクターと代入演算子を作成できない場合にこれを実行したいと考えていますprivate
。