C++相談室 part166 (569レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
489
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 7b32-T+w5) [sage] 2025/06/29(日) 12:56:56.18 ID:RnCZLFSE0(1/6) AAS
>>487
487(1): デフォルトの名無しさん (JP 0H8e-mQSl) [] 2025/06/29(日) 08:57:18.64 ID:9LYz8h1TH(1) AAS
インターネットからファイルをダウンロードするのに、現在のc界隈ではどんなライブラリを使用してるの?
vc2010あたりなら、標準で使えていたけど今でも使えるのかしら?
Windows が前提なら WinINet を使うのが素直なやり方だと思う。
規格の多少の更新などがあっても OS の側で対処してくれるからアプリケーションはリビルドする必要すらなく長期的に使えることが期待できる。

マルチプラットフォームを考えるなら Curl が楽かなぁ……。
490: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7b32-T+w5) [sage] 2025/06/29(日) 13:04:25.17 ID:RnCZLFSE0(2/6) AAS
>>488
488(1): デフォルトの名無しさん (ワッチョイ 06a1-6mIp) [sage] 2025/06/29(日) 10:59:10.19 ID:zQA4sk9y0(1/4) AAS
ちょっ質問なのですが
class Fooの中で構造体型PrivateStructがprivateな型として定義されており、
PrivateStruct型のFooのprivateなメンバFoo::m_stもある状況に対し、
Fooの外でauto&でもってPrivateStructの型を使用できて、
あまつさえFoo::m_stの値を読んだり書いたりできたりしてカプセル化神話が崩壊したんだけど
これっておま環?
(コード)
外部リンク:ideone.com
アクセス指定は識別子の可視性であって、間接的なアクセスも含めた一切の利用を禁止するわけではないよ。
493: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7b32-T+w5) [sage] 2025/06/29(日) 13:37:38.54 ID:RnCZLFSE0(3/6) AAS
>>491
491(1): デフォルトの名無しさん (ワッチョイ 06a1-6mIp) [sage] 2025/06/29(日) 13:14:06.51 ID:zQA4sk9y0(2/4) AAS
上のコードの
>auto& st = x.refStruct(); // stはFooのprivateな型だがビルドが通る。
が識別子PrivateStructの可視性を無視してくれる理由がわからんぬ……
これ
>PrivateStruct& st = x.refStruct();
と書いたら型の名前PrivateStructの可視性がprivateなのでもちろんエラーになる
> 識別子PrivateStructの可視性を無視してくれる理由

識別子 PrivateStruct を使っていないから。
この場合は x.refStruct() という式から型を推論するので型名 (であるような識別子) の可視性は関係ない。

プライベートなデータメンバ m_st だってその参照を外へ持ち出してるだろ。
外で m_st という名前でアクセスできないが m_st に対応するオブジェクトへのアクセスは (アクセス経路があるなら) アクセス指定に左右されない。
同様に、プライベートに定義した型を型名ではアクセスできないが型を使えないわけではない。
495: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7b32-T+w5) [sage] 2025/06/29(日) 14:09:12.19 ID:RnCZLFSE0(4/6) AAS
>>494
494(2): デフォルトの名無しさん (ワッチョイ 06a1-6mIp) [sage] 2025/06/29(日) 13:59:10.64 ID:zQA4sk9y0(4/4) AAS
>識別子 PrivateStruct を使っていないから。
>この場合は x.refStruct() という式から型を推論するので型名 (であるような識別子) の可視性は関係ない。
なんで?
不完全な型の参照はエラーになるのだから
コンパイラは型推論の際Foo::PrivateStructという完全な型の情報まで突き止めているはず……
なんでFoo::PrivateStructの可視性を無視してくれるのや……
無視せずエラーにする言語仕様もあり得たはず
ていうかエラーにならないのがおま環でない証拠がいまのところ無い……
名前に対する使用制限である旨がはっきりと書いてある。
外部リンク[1]:timsong-cpp.github.io
498: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7b32-0lSL) [sage] 2025/06/29(日) 15:52:20.20 ID:RnCZLFSE0(5/6) AAS
>>497
497(1): デフォルトの名無しさん (ワッチョイ d7ad-DFSU) [sage] 2025/06/29(日) 15:29:55.25 ID:PWOccKtm0(1) AAS
プライベートメンバーの参照を返す関数を public でアクセスできる設計の方が驚き
これ単体で見るとおかしいがプロキシパターンなどでそういう構成になることはある。
499: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7b32-0lSL) [sage] 2025/06/29(日) 16:51:17.70 ID:RnCZLFSE0(6/6) AAS
すまん。プロクシパターンではないな。
見当違いなことを書いてた。

まあこの場合は言語機能の確認のサンプルだと思うから設計がどうこうはあまり気にしなくていいんじゃね。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s