В новой версии C ++ (C ++ 11) приведенный выше код прекрасно работает;инициализации разрешены внутри тела класса.
В C ++ 03 (предыдущая версия C ++) вы можете инициализировать fstream
, используя список инициализаторов .:
Foo::Foo() : myFile("file-name", otherArguments) {
// other initialization
}
Синтетически, это делается путем добавления двоеточия после имени конструктора, но перед фигурной скобкой, затем перечисления имени поля, которое вы хотите инициализировать (здесь myFile
), а затем взаключите в скобки аргументы, которые вы хотите использовать для его инициализации.Это приведет к правильной инициализации myFile
.
Надеюсь, это поможет!