2011-01-01 4 views
5

C++ 0x에서는 일부 클래스를 복사 할 수 있지만 이동하지 않을 수 있습니까? 크기가 조정되는 이질적인 클래스를 구현하려고합니다. 복사가 필요한 클래스와 이동해야하는 클래스가 있으면 처리 할 수 ​​있는지 잘 모르겠습니다.복사하지만 이동하지 않음

답변

5

예, 그것은 법적이다. C++ 코더를 아는 것 (나와 같은!) 그러나, 나는 이것이 올지도 모른다라고 예상해야한다고 생각한다.

호기심에서 벗어나서 클래스가 복사 가능하지만 움직일 수없는 경우 어떤 코드를 사용하면 문제가 발생합니까?

+0

크기가 조정되는 이기종 스택입니다. 최소한의 노력으로 C++ 03 호환성을 원한다면 둘 다 허용해야합니다. – Puppy

+1

흠 ... 특히 복사 가능하고 움직이지 않는 (내가 생각하기에 합리적인 용어일까요?) 객체로 분리되는 코드에 무엇이 있습니까? 나는 결코 전에 우연히 만난 적이 없기 때문에 나는 호기심이 많다. – templatetypedef

+0

당신이 그렇게 말한 것은 좋은 일입니다. 어떤 이유로 든 이동 된 객체가 파괴 될 필요가 없다는 것을 명심했습니다. 오케이. – Puppy

0

이동 생성자를 protected/private로 만드는 것은 해당 클래스의 객체를 이동하는 기능을 제한하는 방법입니다. 템플릿에서이를 기대할 수 있습니까? 나는 그렇게 생각하지 않는다. 해당 종류의 수표에는 std::enable_if이 필요합니다.

class MyClass { 
public: 
    /* Copyable... */ 
    MyClass(const MyClass&); 
    MyClass& operator= (const MyClass&); 

    /* ... but not movable. */ 
    MyClass(MyClass&&) = delete; 
    MyClass& operator= (MyClass&&) = delete; 
}; 

그러나, 나는 누군가가이 작업을 수행 할 것입니다 이유에 좋은 이유 생각할 수 없다 : 클래스가 복사 가능한하지만 이동하지 될 수 있도록

관련 문제