'identifier' : プライベート メンバー、プロテクト メンバーの初期化にはコンストラクターが必要です。
コピー コンストラクターは、あるオブジェクトを同じ型の別のオブジェクトの値で初期化します。 (オブジェクトのコピーを作成します)。コンストラクターを定義しない場合、コンパイラによって既定のコピー コンストラクターが生成されます。
このエラーを修復するには
この問題は、コピー コンストラクターが
private
であるクラスをコピーしようとしたときに発生する場合があります。 ほとんどの場合、private
コピー コンストラクターを持つクラスはコピーできません。 一般的なプログラミング技法では、private
コピー コンストラクターを宣言してクラスを直接使用しないようにします。 このクラスは、単独では役に立たない、つまり正常に機能させるには別のクラスを必要とする場合があります。private
コピー コンストラクターを持つクラスを使用しても安全であると判断したら、private
コンストラクターを持つこのクラスから新しいクラスを派生させ、public
コピー コンストラクターまたはprotected
コピー コンストラクターをその新しいクラスで使用できるようにします。 この派生クラスを元のクラスがあった位置で使用するとエラーを解決できます。この問題は、コピー コンストラクターが明示的であるクラスをコピーしようとしたときに発生する場合があります。 コピー コンストラクターを
explicit
として宣言すると、関数との間でクラス オブジェクトの受け渡しができなくなります。 明示的なコンストラクターの詳細については、「ユーザー定義型の変換」を参照してください。この問題は、
const
参照パラメーターを受け取らないコピー コンストラクターを使用して、const
と宣言されたクラス インスタンスをコピーしようとしたときに発生する場合があります。 non-const 型参照ではなく、const
型参照を使用して、コピー コンストラクターを宣言します。