boost::array를 배워봅시다.

1. Old. Old. Old style char buffer[1024]; …(기타 여러 코드들)… sock.recv(buffer, 1024); 혹시 위와 같은 스타일의 코드를 작성하고 있지는 않으신가요? 물론, 잘 작동하고 문제가 없는 코드일겁니다. 하지만, 여기엔 문제가 하나 있습니다. buffer는 배열이지 객체가 아닙니다. iterator도 없으며, 멤버함수도 없습니다. 불편할 뿐더러 위험합니다. 한번 볼까요? char buffer[1024]; …(기타 여러 코드들. 복잡해서 눈에 잘 안들어옴)… sock.recv(buffer, 4096);더 보기

downcast overloading.

회사의 코드들이 상당히 계층적으로 묶여있는 상속관계… 즉, 결과와 관련된 모든 클래스는 ResultInterface라는 순수 가상 클래스(즉, 인터페이스)를 상속받고 있는 관계로 dynamic_cast를 if문으로 쭈욱 연결해서 해당 함수를 호출하는 코드가 일반적이었다.

C++ Standard TR1 변경사항.

지난 3월에 C++ Standard Committee회의가 독일 베를린에서 있었다는군요. 이거 엄청난 뒷북이겠으나, 괄목할만한 것들이 들어있기에 언급하고 넘어가려고 합니다. (대체 이게 얼마만의 Development Note냐.. 반성좀 하자.) 일단, 소스는 Dr. Dobb’s Journal의 C++ Department (formerly C/C++ User’s Journal) 6월호(?)에 실린 Pete Becker씨의 Living by the Rules: Part II입니다. Pete Becker씨의 글은 참 읽기 편하고 즐거워요. 🙂 C++ Standard더 보기

STLPort팀에 패치를 보내다.

일하는 중간에 컴파일러를 Microsoft Visual C++ Compiler에서 Intel C++ Compiler로 바꿔보면 어떨까라는 생각이 문득 들기에.. 삽질을 해버렸습니다. 므흣. 먼저 stlport 4.6.2로 삽질을 했는데, 하다보니 어차피 5.0으로 옮길거 귀찮기도 하고 해서 stlport 5.0.1로 버젼을 바꾸고 빌드 시도. boost에서 std::type_info를 못찾는다고 징징거리고, new.h를 인클루드 할 수 없다고 배째기에 코드를 곰곰히쳐다보았더랍니다. 문제는 Intel C++ Compiler가 MSVC 호환모드로 작동할때에는더 보기

오픈소스 C++ IDE CodeBlocks

CodeBlocks는 오픈소스 크로스플랫폼 C++ IDE입니다. 그토록 갈구하던 녀석이군요. 으흑. ;ㅁ; 특이한 점이랄까.. 하는 것은 여러 C++ Compiler를 지원한다는 점입니다. GCC (MingW / Linux GCC) MSVC++ Digital Mars Borland C++ 5.5 Open Watcom 를 지원하는 군요. 어차피 쓰는 것은 MSVC++과 GCC이긴 하겠지만요. 리눅스에서도 작동하고 윈도우에서도 작동합니다. 특히 윈도우 플랫폼에서는 MingW가 기본으로 포함된 버젼도 있군요. 키야앙!!! –더 보기

boost::shared_ptr에 관해!

boost::shared_ptr은 boost/smart_ptr.hpp를 이용해 사용할 수 있는 라이브러리입니다. smart_ptr은 그 이름과 같이, smart pointer들을 다루고 있는 라이브러리로, noncopyable(복사 불가능한) auto_ptr인 scoped_ptr과 레퍼런스 카운팅을 이용해 객체 해제를 자동으로 관리해주는 shared_ptr, shared_ptr에 레퍼런스 카운팅을 하지 않고 단순히 참조만 할 수 있게 해주는 weak_ptr, shared_ptr과 유사한 intrusive_ptr이 있으며, 배열 스타일의 포인터 사용을 위한 scoped_array, shared_array 역시 존재합니다. 지금부터 알아볼더 보기

boost::*를 배워봅시다에 관해.

C++를 밥벌이로 삼은지 1년하고도 9개월 정도 되었습니다. (병특이 1년 하고도 3개월 남았다는 이야기네요. 하아) 그간, 이런 저런 삽질을 하다가 STL을 만났고 boost를 만났습니다만, STL의 강력하지만 모자란 부분을 훌륭히 매꿔주는 boost의 강력함에 매료되어 이곳 저곳에서 사용하기 시작했고, 이 강력함을 좀 널리 알려보고자 시리즈를 쓰고자 마음을 먹었습니다. 감히 한번 써보자고 마음을 먹었습니다. 그 1탄은 boost라이브러리중 가장 큰더 보기

boost::bind를 배워봅시다.

1. 멋진 예제. C++에서 코딩을 하다보면, 다음과 같은 코드를 실행할 일이 종종 생기곤 한다. //무식한 코드 class A { public: void Start(); int SomeWork(int,int,int); }; std::vector<a> v; …(some inits)… for(std::vector<a>::iterator itr = v.begin(); itr != v.end(); ++itr) { // itr은 포인터가 아니므로 이게 더 맞는 표현이라고 한다.. (*itr).Start(); } vector에 담긴 class A의 instance에 대해서,더 보기

C++ 서적들.

0. The C++ Programming Language C++의 창시자인 Bjarne Stroustrup옹이 친히 집필하신 바이블. 최고다. TCPP와 맞먹음. 특정 상황에서 C++의 작동이 궁금하거나, 표준이 궁금하다면 끼고 살아야함. (실제로 끼고 삼) 1. C++ Standard Library 튜토리얼-레퍼런스 조슈티스 책이라고도 불리는 STL에 관련된 최고의 레퍼런스. 적절한 설명과 적절한 팁과 적절한 예제가 잘 범벅이 되어있음. 2. Effective STL/C++, More Effective C++ 특히더 보기