프로그램-잉/C++ 썸네일형 리스트형 타이머 만들기 이번에도 멤버함수 실습과 관련해서 타이머 제작을 해볼게요 #include #include "ecourse.hpp" using namespace std; using namespace ecourse; void foo(int id) { cout 더보기 스레드 만들기 이번에는 지난번에 배운 멤버함수포인터를 응용하여 스레드를 만들어 보겠습니다. 일단 가장 간단하게 스레드를 만들어 볼건데요 우선 스레드를 사용하기 위해서 Windows.h를 포함시킵니다. #include #include using namespace std; DWORD __stdcall foo(void* p) { return 0; } int main() { CreateThread(0,0, foo, //스레드로 수행할 함수 (void*)"A", //스레드 함수로 보낼 인자. 0,0); } 간단한 코드인데요 DWORD나 __stdcall은 윈도우즈에서 사용하는것들인데 중요한게 아니니 넘어갈게요 메인 함수에 CreateThread를 보면 3번째 4번째 패러미터가 중요합니다. 쉽죠 하지만 이건 객체지향인 C++이 .. 더보기 멤버함수 포인터 C++은 함수 포인터가 있습니다. 포인터가 주소를 저장한 변수이고 함수또한 특정 주소에 저장된 값이죠. 그러므로 함수포인터는 그 함수의 주소를 가리키고 있는것입니다 멤버 함수 포인터는 클래스의 멤버 함수를 가르키고 있는 포인트 변수 겠지요 그럼 이게 뭐가 다를까요? 지난 번에 이야기했듯이 멤버함수는 첫번째 숨겨진 패러미터로 this를 가지고 있습니다. 일반 함수포인터에 멤버함수를 넣으면 패러미터가 달라서 에러가 뜨게 됩니다. 그럼 this가 없는 Static 함수는 대입이 가능한가요? 넵! Static함수는 대입이 가능합니다. 이제부터 아래코드를 보시죠 // 핵심 1. 일반함수 포인터에 멤버함수의 주소를 담을 수 없다. // 핵심 2. 일반 함수 포인터에 static 멤버함수의 주소를 담을 수 있다. /.. 더보기 [C++] Method Call 클래스객체에서 필드는 메모리에 여러개지만 메소는 하나뿐인데 어떻게 구분할까요? class Point { int x=0, y=0; public: void Set(int a,int b) { x = a; y = b; } }; int main() { Point p1; Point p2; p1.Set(10,20); } 멤버 함수는 1번째 인자로 객체의 주소(this)가 추가됩니다 위에 Set은 실제는void Set(Point* const this, int a, int b) 이런식으로 호출되는데요 class Point { int x=0, y=0; public: void Set(Point* const this, int a, int b) { this->x = a this->y = b } }; 코드를 바꿔보면 위와 같이 .. 더보기 VS Code C++ 17 사용법 강의를 들으려고 보니 MordernC++ 을 사용한다고 해서 불안이 몰려왔는데 역시나 컴파일이 안됩니다. 이번에는 얼마나 삽질을 해야할까하고 구글링하는순간 Lucky me 친절하게 설명해주신 분이 계셔서 다행입니다 ㅠ(링크는 맨 아래에) tasks.json에 C++17 추가하기 { "version": "2.0.0", "tasks": [ { "type": "shell", "label": "C/C++: g++ build active file", "command": "/usr/bin/g++", "args": [ "-std=c++17", // C++ 17을 위한 추가 "-stdlib=libc++", // GCC에서는 안되고 Clang에서 사용 "-g", "${file}", "-o", //수정 "${fileDir.. 더보기 VS Code에서 Boost Library 사용법 VS Code에서 C++사용법에 관한 글은 아주 아주 많습니다. 그러나 Boost Library 세팅방법은 찾을 수 가 없습니다. 이걸 당신 찾았다면 Lucky You. 처음에는 한참 c_cpp_properties.json을 수정했는데 VS code는 intellisense하고 compile하고 처리하는 부분이 다르다고 합니다 즉 에디터와 컴파일러가 교류가 없어요. c_cpp_properties.json는 에디터 즉intellisense 부분이었습니다. 컴파일과 실행을 담당하는 부분은 tasks.json파일이구요 1. 부스트 라이브러리 다운 & 압축풀기 www.boost.org/users/download/ Boost Downloads Current Release Version 1.74.0 August 1.. 더보기 이전 1 다음