c++, 클래스안에서 입력파일을 열려고 하는대요~

feelsocrazy의 이미지

int main(int argc, char *argv[])
{
file f;

f.fileOpen(argv);
.............
}

class file{
ifstream in;

public:
void fileOpen(char *argv[]) {
in(argv[1], ios::in | ios :: binary);
예외처리
}
}

c++ 에서.....

main에서 argv[1]에 파일명을 입력받아서....
클래서 안에서 열려고 합니다.
ifstream in 을 클래스 private로 하고 싶어서요...
그런대 몇시간동안 해도 안되서 성질이 나서.....ㅠㅠ

c에서는 되었던거 같은대.....c++은 잘안대내요...아직 포인터 개념이 부족해서....ㅠㅠ
도와주세요~~~

어떻게 고쳐야지 클래스안에서 파일을 열수 있을까요??ㅜ

kimsuelim의 이미지

Quote:
in(argv[1], ios::in | ios :: binary);

이 부분에서 문제가 발생한거 같네요...
C++에서 멤버로 포함된 객체를 초기화 하려면, 초기화 리스트를 사용해야만 합니다.
위에서 처럼, 명시적으로 생성자를 호출하여 초기화 해줄 수 없습니다.
생성자는 언제나, 객체가 메모리에 할당될 때에만 호출된다는 것을 생각해 보시면
이해가 될 듯 싶습니다.

in.open(argv[1], ios::in | ios :: binary)로 코드를 바꿔보세요.

feelsocrazy의 이미지

이제는 대내요~ㅠㅠ

몇시간을 허비했는지....;;;ㅋ

klara의 이미지

C에서도 안됬을 겁니다-_-;