auto in C++
C++ auto 키워드에 대해서
Effective Modern C++ Chapter 2.
auto vs implicit type
변수 초기화
auto
는 변수의 선언과 동시에 초기화를 강제할 수 있다.
1 | int x; // 선언되었지만 초기화되지 않음. |
C++ auto 키워드에 대해서
Effective Modern C++ Chapter 2.
auto
는 변수의 선언과 동시에 초기화를 강제할 수 있다.
1 | int x; // 선언되었지만 초기화되지 않음. |
C++ 에서의 형식 연역
Effective Modern C++ Chapter 1.
1 | template <typename T> |
위 코드는 컴파일 단계에서 expr
로 부터 T
와 ParamType
에 대한 형식 연역이 이루어진다. 이때 T
의 형식 연역은 expr
과 ParamType
에 영향을 받는다.
MSVC 컴파일러에서 상속시 발생할 수 있는 this 포인터 문제
Callback 인터페이스를 제공하는 클래스를 디자인하던 중 발생한 this 포인터 문제에 대해서 정리하기 위해서 작성하였음. 빌드 환경은 윈도우 + MSVC컴파일러.
목표는 몇 가지 콜백함수를 등록하고, 특정 상황에 맞게 호출할 수 있는 인터페이스를 제공하는 클래스를 디자인하는 것이다. 여러 방법 중 해당 클래스를 상속하여 인터페이스를 이용하는 방식을 선택하였다.
먼저 상속관계에서 콜백을 호출하는 간단한 테스트를 진행하였고, 그 과정에서 문제를 발견하였다.
1 | class ICallback |
이벤트를 처리하는 방법에 대하여
프로그램 런타임에 Event가 발생하면 EventManager는 이를 모두 Queue에 저장해 놓았다가 특정 시점에서 모두 Dispath한다.
게임엔진은 사용자가 원하는 Event Type을 정의하고, 특정 Event Type을 처리하는 Callback을 등록하도록 인터페이스를 제공할 수 있다.
1 | /** Engine API **/ |
사용자는 Event<T>
를 상속하여 새로운 Event Type을 정의할 수 있다.
여러 파일에서 공통으로 사용되는 전역 상수의 선언, 정의 방법에 따른 차이점.
constants.h:
1 |
|
main.cpp:
OpenGL 기초
그래픽 랜더링을 위해 CPU에서 GPU로 데이터 전송을 돕는 API.
OpenGL Buffer 객체에 데이터를 담아서 데이터를 전송한다.
자료형이 없는 선형 데이터 블록. 다차원 데이터(이미지 등)을 담을 수 없다. 다차원데이터는 Texture객체에 담아 전송한다.
조금 더 강력하게 클래스 접근을 제한하는 방법.
1 | class Secure |
Usage
1 | auto pSecure1 = Secure::CreateSecureObj(10); // OK |