본문 바로가기

C.C++14

파라미터에서 Pointer, Reference template void bar(T * pTy){ pTy = nullptr; } template void gildong(T & rTy){ rTy = nullptr; } C에는 pass-by-reference가 없다. 단지 pointer를 이용하여 주소를 복사하고 함수에서는 복사된 주소값을 이용하여 pass-by-reference처럼 보이게 동작하는 것이다. 뭐 개념적으로 본다면 위의 동작을 pass-by-reference라고 할 수 있을 것이다. 이것은 의견이 분분하니 넘어가도록 하고 결론적으로 위의 bar 함수는 지역변수 pTy에 nullptr을 대입할 뿐이다. 그리고 기대하던 결과는 나오지 않을 것이다. 문법은 코드를 읽기 쉽게 해준다. c++의 references도 그러한 역활을 하고 있다. 포인터.. 2017. 6. 22.
다차원 배열 어저께 이차원 배열에 대해서 다른 사람에게 설명을 못하겠다고 하여서 대신 설명하게 되었다. 그 친구가 설명한 방식은 다음과 같았다. "이차원 배열이란 말 그대로 이차원적인 배열이고 int a[3][5]는 3x5랑 같다. 그러니까 이러한 모양이다." □□□□□ □□□□□ □□□□□사실 이런식으로 설명하면 int a[3][3][5]는 □□□□□ ■■■■■□ □□□□□■□ □□□□□■ □□□□□ 이런식으로 설명이 가능할 것이다. 하지만 메모리에는 다음과 같이 올라가지 않는다. 1)int a[3][5]{ {1, 2, 3, 4, 5} , {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15} }; int *p = (int *)a; for (int i = 0; i 2017. 6. 20.
클래스 내부 프로시저 음... 일단은 윈도우 관련해서 따로 클래스로 관리할 필요가 있었는데, 다들 알겠지만 this 포인터 때문에 그렇게 간단하게 넣을 수 없다. 나는 윈도우 만들때 여분 메모리를 할당받아서 거기에 주소값을 넣어두고 static 프로시저에서 그 주소값을 꺼내와서 그 오브젝트의 프로시저를 호출하는 방식으로 해결하였다. 일단 Game 클래스 내부에 static 프로시저인 HandleWndProc과 내부에서 사용할 WndProc이 있다. 1) WNDCLASSEX cbWndExtra에 포인터 사이즈를 대입하였다. 프로시저는 하던대로 static 프로시저를 대입하여주었다.WNDCLASSEX wndClass;ZeroMemory(&wndClass, sizeof(WNDCLASSEX));wndClass.lpfnWndProc .. 2017. 5. 25.
에러값 리턴 이런짓은 되도록 하지 말자 jwqe764241::error::ERROR__ jwqe764241::registry::openRegistry( _In_const HKEYhRoot, _In_const wchar_t * lpSubKey, _Out_HKEY&result ) { jwqe764241_ASSERT(hRoot != NULL && lpSubKey != NULL, "Arguments must not be a NULL value"); jwqe764241::error::ERROR__ returnCode = RegOpenKeyEx(hRoot, lpSubKey, NULL, KEY_ALL_ACCESS, &result); if (returnCode == ERROR_SUCCESS) { return ERROR_OK; } .. 2017. 5. 23.