私は[1]で動作するこのコードを書いていますが、私に警告メッセージ[2]を与えて、本当にdoubleのintのアドレスを設定したいと思います。私はそれがref(私は奇妙な行動を経験しません)でそれを行うに保存されている場合は、ちょうど不思議。私はdoubleをint型で作ることができます
[2]
test.cc:10:27:警告: '二重' 内部{} [-Wnarrowing] CONSTダブル& INTREFに 'INT' から 'ミント' の変換を狭く{ myint};
[1]
int main(){
int myint{10};
cout<<"myint: "<<myint<<endl;
const double &intref{myint};
cout<<"intref: "<<intref<<endl;
}
これはおそらく奇妙ではないでしょうか? –
'intのアドレスをdoubleに設定したい'リファレンスはアドレスではありません。それがあったとしても、なぜあなたはこれを望んでいるのですか?前記アドレスを逆参照しようとすると、言語のエイリアシング規則が破られ、したがって未定義の動作が引き起こされる。そして何のために?あなたは何をしようとしているのですか?これはほとんど確かにX/Yの質問です。つまり、「どのように私は具体的なことをするのですか?」と尋ねるのではなく、その質問をするために導いた一般的なものが何であるか教えてください。ここで何をしようとしていても、より良い解決策が絶対に必要です。 –
...もしあなたが文字通り 'int *'アドレスの数値表現をキャストして 'double'変数に格納したいのであれば、それは複数の理由から有効な変換でもありません。この質問の解釈は、意味をなさないか、または人々に回答するための有益な基礎を与えるものではありません。あなたは本当にあなたのモチベーションを正しく説明するために書き直す必要があります。 –