본문 바로가기

c++1112

C++11 람다를 보다 깔끔하게 쓰는 방법 1234567891011 // 비동기 송신을 등록합니다. socket.async_send(buffer(sendChunk, sendBytes), strand.wrap( [this, buffer = std::move(sendBuffer)](const auto& error, size_t bytes) // 람다 {// 완료 함수 if (error) {// 오류를 알린다. this->on_error(error); } } // 람다 끝 ));Colored by Color Scriptercs Vs2015에서 람다를 써서 비동기 핸들러를 설정하는데 코드가 지저분하게 느껴졌다. {}과()이 겹쳐지면서 어디까지가 무슨 코드고 이런 거 구분이 뚜렷하지가 않게 느껴지더라.어떻게하면 보다 깔끔하게 보일까를 생각했는데 람다를 변.. 2015. 9. 19.
std::shared_ptr shared_from_this 잘못된 사용 문제의 코드 12345678910111213LobbyServer(size_t poolSize, unsigned short port){ sessionPool.reserve(poolSize); for (auto i = 0; i 2015. 8. 7.
[c++11] std::weak_ptr의 사용 weak_ptr약한 포인터(weak pointer)에 관한 설명으로 흔히 사용되는 말은 shared_ptr로 연결된 자료구조의 포인터 참조 고리를 끊기 위해서라는 것이다. 나는 weak_ptr를 다음과 같이 설명하는 편이 더 나을 것이라고 생각한다.포인터가 존재할 경우에만 참조해야 하고(다른 누군가에 의해) 삭제될 수 있으며마지막으로 사용된 후에는 소멸자가 호출되어야 하는(그래서 자신이 할당했던 익명 메모리 공간을 제거해야만 하는) 포인터고전 게임인 "행성 게임(asteroid game)"을 구현해야 한다고 생각해 보자. 모든 행성은 게임에 의해 관리되지만 행성 사이의 충돌을 처리하기 위해서 이웃 행성 정보도 관리해야 한다. 행성이 충돌하면 보통 하나 이상의 행성이 소멸된다. 이러한 이웃 행성 목록을 관.. 2015. 7. 23.
asio udp client 작업 중 람다 캡처를 잘못 사용한 문제 123456789101112131415161718void UdpClient::Send(const ip::udp::endpoint& endpoint, const void* source, size_t bytes){ std::vector sendBuffer; sendBuffer.resize(bytes); std::memcpy(sendBuffer.data(), source, bytes); socket.async_send_to( buffer(sendBuffer.data(), sendBuffer.size()), // send data endpoint, [this, buf = std::move(sendBuffer)](const boost::system::error_code& error, size_t bytes){ /.. 2015. 7. 14.