C++相談室 part166 (569レス)
C++相談室 part166 http://mevius.5ch.net/test/read.cgi/tech/1745631298/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
488: デフォルトの名無しさん (ワッチョイ 06a1-6mIp) [sage] 2025/06/29(日) 10:59:10.19 ID:zQA4sk9y0 ちょっ質問なのですが class Fooの中で構造体型PrivateStructがprivateな型として定義されており、 PrivateStruct型のFooのprivateなメンバFoo::m_stもある状況に対し、 Fooの外でauto&でもってPrivateStructの型を使用できて、 あまつさえFoo::m_stの値を読んだり書いたりできたりしてカプセル化神話が崩壊したんだけど これっておま環? (コード) https://ideone.com/slBA72 http://mevius.5ch.net/test/read.cgi/tech/1745631298/488
491: デフォルトの名無しさん (ワッチョイ 06a1-6mIp) [sage] 2025/06/29(日) 13:14:06.51 ID:zQA4sk9y0 上のコードの >auto& st = x.refStruct(); // stはFooのprivateな型だがビルドが通る。 が識別子PrivateStructの可視性を無視してくれる理由がわからんぬ…… これ >PrivateStruct& st = x.refStruct(); と書いたら型の名前PrivateStructの可視性がprivateなのでもちろんエラーになる http://mevius.5ch.net/test/read.cgi/tech/1745631298/491
492: デフォルトの名無しさん (ワッチョイ 06a1-6mIp) [sage] 2025/06/29(日) 13:18:58.11 ID:zQA4sk9y0 訂正orz ×: >PrivateStruct& st = x.refStruct(); ○: >Foo::PrivateStruct& st = x.refStruct(); http://mevius.5ch.net/test/read.cgi/tech/1745631298/492
494: デフォルトの名無しさん (ワッチョイ 06a1-6mIp) [sage] 2025/06/29(日) 13:59:10.64 ID:zQA4sk9y0 >識別子 PrivateStruct を使っていないから。 >この場合は x.refStruct() という式から型を推論するので型名 (であるような識別子) の可視性は関係ない。 なんで? 不完全な型の参照はエラーになるのだから コンパイラは型推論の際Foo::PrivateStructという完全な型の情報まで突き止めているはず…… なんでFoo::PrivateStructの可視性を無視してくれるのや…… 無視せずエラーにする言語仕様もあり得たはず ていうかエラーにならないのがおま環でない証拠がいまのところ無い…… http://mevius.5ch.net/test/read.cgi/tech/1745631298/494
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s