C++ 3

Visual Studio - LNK2001 에러

위 처럼 LNK2001 에러가 발생하는 이유는 링크과정에서의 문제가 발생하기 때문이다. 여러 이유가 있다. 1. 헤더파일에 함수선언을 했지만 cpp파일에서 함수정의를 하지 않는 경우다. 2. static변수를 클래스 내부에 선언했는데 클래스 외부에서 정의하지 않은 경우다. 내 코드의 경우 2번 문제였다. GameManager.h class GameManager { private: GameManager() { chracter = nullptr; } static GameManager* _instance; //CharacterType chType; Character* chracter; GameManager 클래스에 _instance 변수를 static으로 선언했다. 그런데 cpp파일에서 정의하지 않아서 오류가..

C++ 2023.09.02

포인터(Pointer) 연산 - C++

포인터 관련한 연산의 종류는 4가지가 있다. 주소 연산자 1. & 연산 - 주소 연산자도 이전 글에서 소개했듯이, 변수의 주소에 접근하고 싶을 때, 앞에 붙여서 사용한다. int num = 1; int* p= # 만약 num 이 0x12 의 주소를 가지고 있다면 &num 연산을 통해서 0x12 라는 값이 도출된다. 산술연산자 1. + (더하기) - 첫번째로 더하기 연산이다. 포인터는 주소를 저장하는 변수 타입이다. 그리고 int형 포인터 변수는 int형 변수의 주소를 저장할 수 있다. 이 주소에 +1 을 한다고 하자. int* p; int num=2; p=# p++; 만약 이렇게 포인터 변수값을 1 증가시키면 결과적으로 4바이트 뒤에있는 주소를 가리키게 된다. num변수가 0x12 라는 주..

C++ 2023.07.31

포인터(Pointer) 기초 - C++

포인터(Pointer) 모든 변수는 메모리의 어느 공간에 2진수로 저장이 되어있다. 그리고 변수이름은 그 공간을 가리키는 별칭이고 변수이름을 통해 그 공간에 있는 값에 접근이 가능하다. 포인터는 그 주소를 저장할 수 있다. int num=2; int* p1 = # 포인터를 사용할 때는 타입 뒤에 * 을 붙인다. 그리고 어떤 변수의 주소값을 저장한다. 포인터가 아닌 어떤 변수의 주소에 접근할 때는 & 를 붙인다. 위의 코드는 p1 에 num 의 주소를 저장한다는 뜻이다. 이렇게 저장한 변수는 *p1 = 3; int num2 = *p1; 이런식으로 사용이 가능하다. 첫번째 *p1 의 의미는 p1이 가리키는 주소에 접근하라는 뜻으로 그 주소에 3 을 저장하라는 의미이다. 두번째는 p1이 가리키는 주소에..

C++ 2023.07.29