본문 바로가기

개발/C++10

[C++] MFC 리스트(CList/CObList/CStringList) 및 POSITION 사용법 동일한 타입의 여러 데이터들을 저장할 수 있는 구조는 STL 컨테이너를 제외하고 대표적으로 배열과 리스트가 있다. 이번에는 리스트의 사용법과 대표적으로 사용되는 예시에대해서 알아보려고 합니다. MFC에서 List형태의 자료구조는 다양하게 많은데 템플릿 리스트클래스는 CList가 있고 비 템플릿 리스트 클래스는 CObList, CStringList, CPtrList 정도가 있다. CObList는 CObject 포인터를 데이터 타입으로 가지고, CStringList는 CString을, CPtrList는 void 포인터를 데이터 타입으로 가진다. CList를 사용하기 위해서는 "afxtempl.h" 헤더 파일을 #include 해줘야하고, 비템플릿 리스트 클래스들을 사용하기 위해서는 "afxcoll.h" 헤더.. 2021. 9. 9.
[MFC] C++ 파일입출력 CFile/CArchive (직렬화. Serialize) MFC 환경에서 파일을 Read, Wirte할 때 사용할 수 있는 방법이 여러개 있는데 그중 CFile과 CArchive이 대표적으로 많이 사용된다. MFC의 Document나 View환경에선 직렬화 관련 기본코드를 생성 해준다. 이를 이용하면 편하게 데이터를 입출력 할 수 있을 것이다.아래 간단한 예제로 사용법에 대해서 알아보자. CFile 데이터 쓰기 CFile을 선언하고 Open()후에 입력할 데이터를 Write()함수를 통해 기록하고 Close()를 호출해줘야한다. int a = 100; int b = 200; CFile file; file.Open(_T("Test.txt"), CFile::modeCreate | CFile::modeWrite); file.Write( a /*입력할 데이터*/, s.. 2021. 8. 26.
[C++] static 멤버 변수, static 멤버 함수에 대해 (+ mutable) static 멤버변수 기존 전역 변수를 사용 할 때 int a_num = 0; int b_num = 0; class A { public: void Plus_A() { a_num += 1; } }; class B { void Plus_B() { b_num += 1; } }; int main() { A a; B b; a.Plus_A(); b.Plus_B(); cout 2021. 8. 24.
[C++] 생성자, 소멸자, 복사생성자, 복사 대입 연산자, 복사생성 방지에 대한 얘기 C++ 에서는 기본적으로 빈 클래스를 생성하면 자동으로 생성해주는 생성자와 소멸자 등 이있다. 예를들어 는 와 같은 기능을 수행한다고 보면 된다. 매번 다 모든 생성자들과 소멸자를 생성 하는것은 아니고, 컴파일러가 필요하다고 판단될때 생성해준다. 아래와 같은 동작을 수행할 때 생성 된다. 자동으로 생성된 것을 사용하여 문제가 없으면 좋겠지만, 문제가 발생하는 경우들이 있다. 대표적으로 1 .참조자를 데이터 멤버로 가지고 있는 경우 2. 상수 객체를 데이터 멤버로 가지는 경우 두가지를 꼽을 수 있다. 위와 같은 상황에서는 직접 복사 대입 연산자를 정의해 주어야 한다. 그렇지 않으면 컴파일 오류가 발생하게 된다. 그러면, 복사생성자나 대입연산자를 자동생성하지 않는 방법은 없을까? 사본을 만들지 않고 유일한 .. 2021. 2. 17.