std::thread 참조로 전달하면 복사 생성자가 호출됩니다
문제:
전달할 때 참조에 의한 std::thread에 대한 Log 클래스의 객체, 컴파일러 오류 참조 전달이 복사 생성자를 우회해야 한다는 기대에도 불구하고 발생합니다. 반대로, 포인터로 객체를 전달하면 문제가 해결됩니다.
설명:
이 동작의 근본적인 이유는 std::thread에서 인수를 전달해야 한다는 것입니다. 값. Log &logger에서와 같이 참조로 전달하는 것은 포인터를 전달하는 것과 동일한 효과를 갖습니다. 즉, 스레드에 전달될 객체의 복사본을 생성하려면 복사 생성자가 여전히 필요합니다.
해결책:
참조 의미를 다시 얻으려면 sử dụng std::reference_wrapper:
std::thread newThread(session, &sock, std::ref(logger));
참고:
위 내용은 std::thread에 대한 참조로 클래스 객체를 전달하면 여전히 복사 생성자가 트리거되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!