2

これら2つの主な違いは何ですか?このようなときに2番目のものが機能しないのはなぜですか?

template <class T> MyStack<T>::Node::Node(T& input, Node* head):next(head),value(input) {}

template <class T> MyStack<T>::Node::Node(T& input, Node* head) {next = head; value = input;}

2番目のものが機能しない理由についての私の推測は、初期化時に変数を割り当てるものが何もないためです。

4

2 に答える 2

1

MyStack<T>::valueタイプのようT&です。その場合は、参照を初期化する必要があり、別のオブジェクトに再バインドできないことに注意してください。オブジェクト データ メンバーである参照を正しく初期化する唯一の方法は、初期化子リストを使用することです。コンストラクターで代入してそれらを初期化することはできません。(実際、初期化子リストのエントリを省略すると、「未初期化参照メンバー」のようなエラーが発生するはずです。)

于 2013-04-09T15:25:01.110 に答える
0

nextまた、value空のデフォルト コンストラクターがない可能性があります。

それに加えて、 const および reference メンバーは初期化リストで初期化する必要があり、それらに割り当てることはできません。

于 2013-04-09T15:23:09.147 に答える