항목 13 에선 StackImpl 이 protected 를 나타내어 private 상속을 통하여 Stack 을 구현했다면, 이번에는 /?????/ 이 부분이 public 인터페이스일 경우, HAS-A 관계를 이용하여 Stack 을 구현해 보자. 코드 template class StackImpl { /* ? ? ? ? ? */ StackImpl( size_t size = 0 ); ~StackImpl(); void swap( StackImpl& other ) throw(); T* v_; size_t vsize_; size_t vused_; private: // private and undefined: 복사가 허용되지 않음 StackImpl( const StackImpl& ); StackImpl& operat..
2008/11 검색 결과
예제코드 template class StackImpl { /* ? ? ? ? ? */ StackImpl( size_t size = 0 ); ~StackImpl(); void swap( StackImpl& other ) throw(); T* v_; size_t vsize_; size_t vused_; private: // private and undefined: 복사가 허용되지 않음 StackImpl( const StackImpl& ); StackImpl& operator=( const StackImpl& ); }; template class Stack : private StackImpl { public: Stack( size_t size = 0 ); ~Stack(); Stack( const Stack& ..
http://www.gamedev.net/community/forums/topic.asp?topic_id=453957 http://www.sysbug.com/bbs/board/view.php?no=11&mode=&list_num=&page=2&page_count_frist=1&select=&keyword=&brdCode=board2 http://fallsky4.springnote.com/pages/1333674 이 모든 경우를 종합해서 해결 했다. 쉽게 말한다면, WSARecv 의 5번째 파라미터인 플래그는 DWORD 의 포인터 만을 받아 들인다. 편하게 하기 위해서 상수 0 이나, NULL 로 주었을 때 10014 에러 코드를 반환 하게 된다.
Bind 는 임의의 함수 포인터나 함수에 국한되지 않고, 함수 객체도 bind 할 수 있게 해 준다. 이 함수 객체를 바인드 할 경우 operator() 의 리턴 타입을 명시적으로 bind 함수에 알려 줘야 한다. #include struct F { int operator()(int a, int b) { return a - b; } bool operator()(long a, long b) { return a == b; } }; int main( void ) { F f; int x = 104; bind(f, _1, _1)(x);// f(x, x), i.e. zero return 0; } 이 처럼 bind(...) 을 지정해 주어야 bind 함수는 객체를 생성 할 수 있게 된다. 여기서 유심히 봐야 할 부분..
어디에 쓰이는고 하면, 컨테이너의 객체들을 들 쑤시고 싶을 때, 함수 객체를 사용해야 할 때, 일일이 함수 객체를 만들어 주기 귀찮을 때, 주로 사용 된다. bind 는 std::bindlst 와 std::bind2nd를 보다 일반화 시킨 함수이다.. bind 는 임의의 함수, 함수 포인터, 함수 객체, 멤버 함수를 함수 객체로 만들 수 있으며, 원하는 위치에 원하는 값을 전달 시킬 수 있는 함수 객체를 만들어 준다. (요구 조건 또한 없다. 묶고 싶다면 bind 라고 외워도 될 정도..) 바인드의 가장 기초가 되는 사용법을 알아보면 #include using boost::bind; int f(int a, int b) { return a + b; } int g(int a, int b, int c) { r..
Boost는 개발을 가속시키는 도구이다. 처음 Boost를 shared_ptr 를 사용하기 위해서 썼었다. 그리고 주변에서 만들어서 써야 한다는 말을 듣고, 직접 smart_ptr을 만들었었다. 하지만, 그 기능에 대한 검증이 힘들고, 버그가 있는지 없는지 알 수 없는 상태를 유지해야만 했다. 그리고 어느날, std::pair 을 사용 하다가, 3개 이상을 묶고 싶을 때, 3개 이상을 한번에 선언 하려고 할 때를 위하여, 템플릿 클래스를 만들어서 썻었으나, 만드는 과정 중 부스트의 tuple 을 본 순간, 나는 다시 boost 를 써야만 한다 라고 생각을 굳힌다. Boost 는 개발을 가속시키는 도구이다. 부스트의 한구절 한구절 코드를 곱씹어 보아야 겠다.
최근댓글