목록전체 글 (67)
헤더파일

로그라이크, RPG 게임플레이가 적용된 뱀파이어 서바이버류 게임입니다. 구글 스토어 : https://play.google.com/store/apps/details?id=com.soborostudio.littlesavior 다국어 지원 텍스트에 다양한 인자를 넣는 방식과 어느 곳에 쓰여도 유연하게 대응하기 위해 다국어 언어 데이터 및 로컬라이징 시스템을 직접 구현했습니다. 퀘스트 및 대화 시스템 Text Animator 에셋을 활용한 대사 및 카메라 연출을 구현했습니다. UI 시스템, 툴팁 UI는 몇가지 타입으로 구분하여 관리했습니다. 1. 스택 형식으로 쌓이고 이전 출력되던 UI는 감추는 Page타입. 2. 스택 형식으로 쌓이지만 이전 출력되던 UI는 감추지 않는 Popup타입 3. 스택으로 관리되지 ..
// 컨테이너의 모든 요소를 출력하는 함수. template void show(T& c) { //auto p1 = c.begin(); //auto p2 = c.end(); auto p1 = begin(c); auto p2 = end(c); while (p1 != p2) { cout decltype(c.end()) { return c.end(); } // arr version template constexpr T* begin(T(&arr)[N]) { return arr; } template constexpr T* end(T(&arr)[N]) { return arr + N; } int main() { list s = { 1,2,3 }; int x[3] = { 1,2,3 }; auto p1 = begin(s)..
assert는 실행시간에 표현식이 거짓이면 프로그램을 종료합니다. c++11에서 추가된 static_assert는 컴파일 타임에 판단하여 거짓이면 컴파일이 실패합니다. void foo(int age) { assert(age>0); static_assert(age >0, "error");//변수는 컴파일 타임에 판단 불가능, 사용 X static_assert(1
class Point { int x, y; public: explicit Point(int a, int b) : x(a), y(b) {} }; void foo(Point p) {} int main() { foo({ 1,1 }); //Point p1(1, 1); //Point p2{ 1, 1 };// direct initialize //Point p3 = { 1, 1 };// copy initialize. error } p3 초기화는 explicit가 없다면 복사 생성자가 실행되어 초기화 됩니다. 하지만 explicit를 넣어준다면 불필요한 복사생성을 막을 수 있습니다.
void true_function() {} class istream // basic_istream { public: bool fail() { return false; } // 방법 1. bool 로 변환 - 단점. shift 연산이 허용된다. //operator bool() { return fail() ? false : true; } // 방법 2. void* 로의 변환 - C++ 98/03 // operator void*() { return fail() ? 0 : this; } // 방법 3. 함수 포인터로의 변환. //typedef void(*F)(); //operator F() { return fail() ? 0 : &true_function; } // 방법 4. 멤버 함수 포인터로의 변환. - S..
class Point { int x, y; public: Point() : x(0), y(0) {} Point(int a, int b) : x(a), y(b) {} Point(int a) : x(0),y(a){} // 변환 연산자 : 객체를 다른 타입으로 변환할때 호출된다. // 특징 : 리턴 타입을 표기하지 않는다. operator int() { return x; } }; int main() { int n = 3; double d = n; // 암시적 형변환 발생. Point p1(1, 2); n = p1;// p1.operator int() cout
int ret = foo(); if (ret == 0) { } // C++17 스타일 // if ( init 구문; 조건문 ) if (int ret = foo(); ret == 0) { cout