C++에서 멤버 함수 안에서 자기 자신의 멤버를 this를 이용해 접근할 수 있음
구조가 어떻게 돼있냐하면..
class Foo
{
private:
int x = 0, y = 0;
public:
void set(int a, int b) // void set(Foo* const this, int a, int b)
{
x = a; // this->x = a;
y = b; // this->y = b;
}
static void foo(int a) // void foo(int a)
{
x = a; // error
}
};
멤버 함수 인자에 보이지는 않지만 자기 자신을 가리키는 놈이 있음
static 함수에는 없음
그래서 일부 라이브러리를 사용하다 보면 문제가 있는데
사용자 클래스에서 스레드를 만들어 멤버 함수를 호출하는 경우 에러가 나옴
스레드에 넘길 함수는 멤버 함수를 넘기지 못함
그래서 static함수를 넘기거나 해야 하는데
멤버에 접근하기 위한 방법은
CreateThread의 인자로 원하는 인스턴스를 넘기면 됨
CreateThread(0, 0, Foo, (void*) this, 0, 0);
이외에도 멤버를 사용할 수 없는 라이브러리들을 사용할 때
static으로 id와 인스턴스를 가진 map을 만들어 id로 인스턴스를 가져와 사용할 수 있음
'개발 > C++' 카테고리의 다른 글
C++ 퀵 소트 (빠른 정렬) 구현해보기 (0) | 2019.06.21 |
---|---|
C++ 머지 소트(병합 정렬) 구현해보기 (0) | 2019.06.21 |
C++ const 키워드 (0) | 2019.06.09 |
C++ shared_ptr 사용할 때 주의할 점 (0) | 2019.05.24 |
컴파일러 최적화 (0) | 2019.05.13 |