Programming/C & C++

Programming/C & C++

[C++] different underlying type in enum 'enum class TypeName'

Error 발생 원인 enum class를 선언하고, 공통 헤더에서 prototype만 정의하려는 시도를 진행하였으나, 제목과 같은 에러가 발생하였다. 이러한 현상은 enum class의 구현부의 underlying type과 prototype의 underlying type이 서로 달라 발생하는 오류이다. 예제 코드 global.h enum class Type; enumclass.h #include "global.h" enum class Type : unsigned int { A, B, C } 위와 같이 global.h에는 별다른 type을 지정안했으나, enumclass.h에는 별도의 타입이 지정되어 있을 때 발생한다. 해결 방법 이러한 부분은 아래와 같이 타입을 지정해주면 해결 된다. 예제 코드 gl..

Programming/C & C++

[C++] Inheritance: 'A' is an inaccessible base of 'B'

C++에서 접근제어 지정자를 잘못 지정해서 발생하는 현상이다. 아래와 같이 업캐스팅으로 부모 클래스의 자료형으로 자식 클래스의 포인터를 가리키려 할 때, 이와 같은 현상이 발생한다. class A { } class B : A { } A* obj = new B(); 이와 같은 문제는, 접근제어 지정자를 변경함으로서 해결 가능하다. class A { } class B : public A { } A* obj = new B();

Programming/C & C++

C에서 날짜 출력하기

#include #include void main() { struct tm *t; time_t timer; // 시간측정 timer = time(NULL); // 현재 시각을 초 단위로 얻기 t = localtime(&timer); // 초 단위의 시간을 분리하여 구조체에 넣기 printf("현재 시간은 "); printf("%d년 %d월 %d일 %d시 %d분 %d초입니다.\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec); }

Programming/C & C++

Const char* vs char* const

const int a = 1; // read as "a is an integer which is constant" int const a = 1; // read as "a is a constant integer" Both are the same thing. Therefore: a = 2; // Can't do because a is constant The reading backwards trick especially comes in handy when you're dealing with more complex declarations such as: const char *s; // read as "s is a pointer to a char that is constant" char c; cha..

Programming/C & C++

WindowsAPI C언어에서 파일 목록 가져오기

#include #include #include #include #define UNICODE void WCharToChar(const wchar_t* pwstrSrc, char pstrDest[]) { int nLen = (int)wcslen(pwstrSrc); wcstombs(pstrDest, pwstrSrc, nLen + 1); } int main(){ _wsetlocale(LC_ALL, _T("korean")); WIN32_FIND_DATA findFileData; HANDLE hFileHandle; // szDir에 뒤지고자 하는 디렉토리의 경로명을 준다. 예를 들면 "C:\\TEMP\\*.*" // 찾아진 파일의 속성은 findFileData의 dwFileAttributes를 살펴본다. hFil..

Programming/C & C++

C++ SDL 콘솔창 숨기는법

많은 강좌들이 win32 console 응용프로그램으로 프로젝트를 만들라 한다. 디버깅할땐 콘솔창에 로그를 띄우는것이 편하긴 하나 필요가 없어질 경우가 있는데 프로젝트속성에 들어가서 링커 -> 시스템에 들어가면 하위 시스템에 콘솔(/SUBSYSTEM : CONSOLE)로 되어있을 것이다. 이것을 창(/SUBSYSTEM:WINDOW)로 바꿔주면 콘솔창이 없이 실행된다.

Programming/C & C++

C++ STL vector sort 정렬함수

C++에서는 기본적으로 #include 을 추가하는 것 만으로도 별도 구현없이 sort함수를 사용할 수 있다. 또한 sort의 인자로는 sort(시작,끝,비교함수); 방식으로 사용이 가능하다. 간단하게 int형 벡터 v를 처음부터 끝까지 오름차순 정렬을 하기 위해선 sort(v.begin(), v.end()); 와 같이 코드 한줄로 처리가 가능하다. 하지만, vector에 int형만 사용하는 것이 아니라, 다른 type의 변수를 사용해야 하는 경우도 많다. 이런 경우 compare함수를 구현하여 sort함수의 세번 째 인자에 넘겨 줌으로써 두 값을 비교하여 정렬 할 수 있다. struct person { int age; std::string name; }; bool comp(person a, person..

Programming/C & C++

C++ sstream( sscanf, 문자열스트림 )

C에서 sscanf와 비슷한 함수로 콘솔로 입력받는것과 비슷하게 문자열에서 값을 가져온다. 선언은 ###cpp #include std::stringstream ss; 식으로 하면된다. 또한 사용방법은 아래의 예제를 통해서 보도록 하자. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include #include #include int main() { std::string s; std::stringstream ss; ss s; std::cout

후유증
'Programming/C & C++' 카테고리의 글 목록