클래스 테스트 일정한 데이터 멤버와C++ 11 CONST 데이터 멤버는 표준 : 삽입은
#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 데이터 멤버가있는 객체에 할당 할 수 있습니까?)?
도움 주셔서 감사합니다.
확실하지 않은 경우'std :: move()'를 (를) 사용해보십시오. –
const 데이터 멤버를 사용하면 복사 할당이나 이동 할당을 사용할 수 없습니다 (무서운 const 캐스트 해킹없이) –
@ 리차드 호지스 : 나는 그것이 불가능하다고 두려워했습니다. 감사. – justik