#include using namespace std; class File_ptr { FILE *p; public: File_ptr (const char* n, const char* a) { p=fopen(n,a); } File_ptr (FILE *pp) {p=pp;} ~File_ptr() {fclose(p);} operator FILE* () {return p;} }; void use_file(const char* fn) { File_ptr f(fn,"r"); // file will be closed when fn goes out of scope // ... } int main(int argc, char* argv[]) { use_file("foo"); return 0; }