2016-09-30 3 views
1

Как инициализировать переменную ifstream в конструкторе класса? Ниже приведен класс и конструктор. Я использую список инициализации для инициализации переменной ifstream. Ниже приведен код.Инициализация переменной ifstream в конструкторе класса

class A 
{ 
public: 
A(ifstream& in1); // constructor 

private: 
ifstream& input; // reference to the input stream 
}; 

A::A(ifstream& in1) :input(in1) 
{ 
//counstructor used to initialise the member variables. Initialization list  used to initialize. 
} 

Почему код не работает?

A::A(ifstream& in1) 
{ 
input=in; 
} 

ответ

0

Ссылки должны быть инициализированы при декларации.

A::A(ifstream& in1) :input(in1) 

Это инициализирует его при объявлении. Список инициализаторов членов - это способ инициализации ссылок в конструкторе.

input=in; 

Это не так.

0

Ссылка не может быть инициализирована заданием. После его инициализации это просто псевдоним для всех, на что он ссылается. Назначение ему - это присвоение тому, на что оно ссылается, и std::ifstream не может быть скопирован.

Смежные вопросы