0からの、超初心者C++相談室at TECH0からの、超初心者C++相談室 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト485:デフォルトの名無しさん 23/06/20 19:02:06.99 mbwsU8Mq.net 話題がないから質問してみる struct Summer {}; Summer summer; Summer *const summerConstPtr{}; const_cast<Summer*>(summerConstPtr) = &summer; // だめ const_cast<Summer*&>(summerConstPtr) = &summer; // いける 質問1) 最後のいけるやつのconst_cast<Summer*&>の「&」はどういう意味なんでしょう? 参照のことかいな? 質問2) なんでconst_cast<Summer*>ではだめなのかな? 486:デフォルトの名無しさん 23/06/20 19:05:08.72 mbwsU8Mq.net なんか変換されたw ∑merでなくて&summerです 487:はちみつ餃子 ◆8X2XSCHEME 23/06/20 20:45:04.07 IIzrqfbq.net >>485 参照が絡むとややこしくて単純に説明できないんだけど 代入演算子の左側は変更可能な lvalue (modifiable lvalue) であることということになっていて そのキャストだと prvalue になってしまうから代入できないという結果になる。 たとえば int x = 1; x = 2; は有りだけど 1 = 2; は駄目なのはわかるでしょ。 この代入のときの x はそこに入っている 1 という値に意味はなくて場所に意味がある。 値として取り出されてしまうと代入できないんだ。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch