1

基本的に、ファイルレベルの静的が構造体であると想定して書かれたコードがたくさんあります。したがって、すべての参照はstruct.memberのようになります。

このコードに変更を加えて静的構造体 *にし、実行時にこの構造体を割り当てる必要がありました。

私は怠惰で struct.member の A TONをstruct- >memberに変更したくないので、参照struct& ref = *myStaticを作成したかったのです。

しかし、参照は宣言時に初期化する必要があり (そうですか?)、実行時に何を参照するかしかわかりません。これは可能ですか?

(紛らわしい場合に備えて..実際の構造体名の代わりに構造体という単語を使用しています。リテラルのC ++構造体キーワードとしてではありません)

4

1 に答える 1

1

「参照は宣言時に初期化する必要があります(そうですか?)」

参照が初期化されるオブジェクトは、参照が作成された時点で存在している必要があります [1]。この場合は存在します。

MyStruct* s = new MyStruct;
MyStruct& ref = *s;

これは、 type のオブジェクトにメモリを動的に割り当てMyStruct、次にこのオブジェクトを構築し、最後refにこのオブジェクトへの参照を作成します。の寿命に注意している限り、まったく問題ありませんs。存在するメモリsが解放されると、参照は無効になります。

ただし、参照を使用するかどうかの決定は、 に置き換える.のが面倒だと感じてはいけません->


[1] C++03 標準8.3.2 §4 : 「参照は、有効なオブジェクトまたは関数を参照するように初期化する必要があります。」

于 2013-02-14T00:10:03.317 に答える