E2305 ベクタをコピーする 'class::class' ('class'&) が見つからない または ベクタをコピーする 'class'::operator=('class'&) が見つからない (C++)
C++ クラス 'class1' にクラス 'class2' のベクタ(配列)が含まれ,'class1' 型のオブジェクトを 'class 1' 型の別のオブジェクトから構築する場合は,次のコンストラクタを使用する必要があります。
class2::class2(class2&)
これで,ベクタの要素を構築できます。
このコンストラクタはコピーコンストラクタと呼ばれ,パラメータを 1 つだけ(そのクラスへの参照)受け取ります。
通常は,コンパイラがコピーコンストラクタを自動的に提供します。
ただし,クラス 'class2' のコンストラクタを定義し,そのコンストラクタに 'class2&' 型のパラメータと,デフォルト値を持つほかのパラメータがある場合,コピーコンストラクタはなく,コンパイラも作成できません。
これは,両者を区別できないためです。
class2::class2(class2&)
class2::class2(class2&, int = 1)
一部のパラメータはデフォルト値を持たないように,このコンストラクタを再定義する必要があります。
これで,参照コンストラクタを定義するか,コンパイラに作成を任せることができます。
Cannot find class::operator= ...
C++ クラス 'class1' にクラス 'class2' のベクタ(配列)が含まれ,'class1' 型のクラスをコピーする場合は,次の代入演算子を使用する必要があります。
class2::class2(class2&)
これで,ベクタの要素をコピーできます。
通常は,コンパイラがこの演算子を自動的に提供します。
ただし,'class2&' 型のパラメータを受け取らない operator= をクラス 'class2' に定義した場合,コンパイラはこれを自動的に提供しません。自分で指定する必要があります。