에 대해 컴파일러에서 합성 한 기본 복사 생성자는 자체 정의하지 않는 클래스를 사용합니다. 즉, 모든 개체를 한 개체에서 다른 개체로 복사합니다.C++ 컴파일러에서 기본 복사 생성자를 합성하는 방법
나는 비슷한 것을하고 싶다. 메소드를 작성하고 싶습니다.
template <typename T>
T f(const T& obj) {
// for each member var i of obj, I want to call some method g(obj.i)
}
이제 멤버 변수의 이름을 알 수 없습니다. 이 경우 복사 생성자 경우 g 대신 할당 연산자를 호출 할 수 있습니다.
분명히 컴파일러가이 작업을 수행합니다 (그러나 클래스의 멤버 이름이 인 것으로 추측 한 후에 가능합니다). 모든 클래스 T에 대해 을 수행 할 수 있습니까?
POD 인 경우 memcpy를 사용하지 않는 이유는 무엇입니까? – marcinj
@luskan : 아이디어는 각 멤버를 복사하는 것이 아니라 각 멤버에서 임의의 함수 'g'를 호출하는 것입니다. –
아니요, 불행히도 자신을 정의 할 때 기본 복사 생성자의 기능을 되 찾을 수 없습니다. –