クラスTestの簡単な例があります
#include <algorithm>
#include <iterator>
#include <vector>
template <typename T>
struct MinMax { T min, max; };
template <typename T>
using TList = std::vector<T>;
template <typename T>
class Test
{
private:
const T a, b;
const MinMax <T> m;
public:
Test() : a(0), m{ 0, 0 }, b(0.0) {};
public:
T getA() const { return a; }
MinMax <T> & getMinMax() const { return m; }
T getB() const { return b; }
Test(const Test &t) : a(t.a), b(t.b), m(t.m ) {}
};
定数データ メンバーを使用します。コンストラクターの代わりに、データは変更されません。std::inserter を使用して、Test オブジェクトのベクトルを別のベクトルにコピーしたいと考えています。コピーコンストラクタが不十分であることに驚いています
int main()
{
TList <Test <double> > t1;
TList <Test <double> > t2;
Test<double> t;
t1.push_back(t);
std::copy(t2.begin(), t2.end(), std::inserter(t1, t1.begin()));
return 0;
}
次のコンパイラ エラーが表示されます (VS2015)。
Error C2280 'Test<double> &Test<double>::operator =(const Test<double> &)': attempting to reference a deleted function Const
データ メンバーを const にして、別の方法でコピーを実行することは可能ですか (いくつかのハック :-))? または、演算子 = を定義する必要があるため、データ メンバーを const にすることはできません (const データ メンバーを持つオブジェクトに代入することはできません)。
ご協力いただきありがとうございます。