2010-01-17 5 views
3

프로그램이 실행 중일 때 때로는 액세스, 기록, 삭제 등의 저장된 데이터가있는 파일이 있습니다. 이를 달성하기 위해 SavedDataHandler 클래스를 작성하기로 결정했습니다. 현재 fstream 클래스를 사용 중입니다.데이터 조작원이없는 클래스가 파일 조작에 적합한 옵션입니까?

하나의 데이터 멤버를 fstream 자체로 생각하고, 생성자에서 열고, 소멸자에서 닫는 것을 고려했습니다. 그러나 SavedDataHandler에서 호출 된 다른 함수가 스트림을 다르게 (다른 플래그를 설정하는 등) 열어서 해당 경로를 선택하지 않기로 결정했습니다.

그 대신 파일 열기와 닫기를 처리하는 공용 멤버 함수를 사용하여 파일 이름을 static const std::string으로 그냥 가지고 있습니다. 성능은 문제가되지 않습니다.

이 경로가 유효한 옵션입니까? 데이터 멤버가 없으므로 생성자를 제공하는 것조차 필요하지 않습니다. 그것은 함수 (그리고 하나의 정적 상수)를 포함하는 클래스이며, 함수는 데이터 멤버가 아닌 리소스에서 작동합니다.

답변

2

어떤 프로젝트에서는 포장이 필수적입니다. 나중에 파일 I/O 라이브러리 (C++ 라이브러리가 최적화되고 ISO이므로)를 원한다면 어떻게해야 할까? 예를 들어 나중에 파일 I/O 라이브러리를 변경해야한다고 생각하면됩니다. 그 때 당신은 무엇을 할 것입니까? fstream에서 YourNewSuperMegaLib :: SuperFileSystem :: MegaFileStream으로 모든 호출을 변경 하시겠습니까? 단순성을 원한다면 fstream을 상속 받고 생성자에서 원하는 시작 모드를 전달하고 슈퍼 생성자를 순식간에 호출 할 수 있습니다.

4

Hmya에서 fstream 클래스는 파일 자체의 운영 체제 핸들 주위에 이미 가능한 래퍼 클래스입니다. fstream을 중심으로 자신의 래퍼에 기능을 추가하는 방법을 생각할 수 없다면 실제로 래퍼가 필요 없다는 힌트로 생각해보십시오.

할 수 있기 때문에 포장해서는 안됩니다.

관련 문제