2016-09-30 13 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はコピーできません。

関連する問題