Вы пытаетесь открыть файл дважды внутри checkName()
: первый раз при вызове конструктора внутри вызова к openInputFile()
, второй раз внутри самого checkName()
. Почему второй звонок на open()
?
Я не знаю, что происходит, когда ifstream
с уже открытым файлом пытается open()
другой файл, но это не будет хорошо, и это вполне может зависеть от конкретной реализации библиотеки (следовательно, различное поведение между Dev-C ++ и MSVC ++). Короче, не делай этого .
Существует по крайней мере еще одна ошибка: вы не закрываете inFile
где-либо внутри checkName()
.
Но в любом случае, сделайте это вместо
Действительно, лучше не иметь отдельной функции checkName()
- просто попытайтесь openInputFile()
открыть файл и, если он не удастся, сообщить об ошибке прямо здесь и / или вернуть указатель NULL
(или даже исключение) Таким образом, операция является «атомарной» - в таком случае, если файл существует во время вызова checkName()
, но удаляется перед последующим вызовом openInputFile()
, ваш код будет очень запутан.