- 1 名前:sage [2025/04/26(土) 10:34:58.41 ID:pbPDl6lv0.net]
- !extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512 ↑同じ内容を3行貼り付けること 次スレは>>980が立てること 無理なら細かく安価指定 ※前スレ C++相談室 part165 https://mevius.5ch.net/test/read.cgi/tech/1698705458/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
- 706 名前:デフォルトの名無しさん mailto:sage [2025/09/29(月) 23:01:05.35 ID:jk3QzjEU0.net]
- NOLINT
- 707 名前:デフォルトの名無しさん mailto:sage [2025/09/29(月) 23:04:57.63 ID:rfIMSjI90.net]
- >>705
その場合const付けたほうが良い理由は「変更されないことを明示」することより constのインスタンスに対してその関数を呼べなくなることでは? ↓はエラーか警告(どっちかは忘れた)になると思う(constオブジェクトの非constメンバ関数は呼び出せない) void SaveData(const Sample sample) { sample.DoSave(); } void Sample::DoSave() const { ファイルの保存処理 } にしておけば、DoSaveは呼び出せる
- 708 名前:デフォルトの名無しさん mailto:sage [2025/09/30(火) 01:33:12.30 ID:Xmjd+d/v0.net]
- 処理だからconst付けないんじゃなくて、そのメンバ関数がPointクラスの中身を書き変えないことを保証するためにメンバ関数の後ろにconstは付ける
つまり、Save処理はPointクラスを特段変更するメソッドではないだろ? だったらconstは付けるべき
- 709 名前:デフォルトの名無しさん mailto:sage [2025/09/30(火) 07:07:46.33 ID:NaKN2pJV0.net]
- >>705
つまり、constを本来の意味(中身を変更するかどうか)ではなく「getterであるかどうか」を示すラベルとして使いたいってことでしょ? で、何を持って「getterであるかどうか」はあなたの頭の中にしかない定義であって、そのlintはもちろんコンパイラもエディタも世のライブラリも知ったことではない それらをオレオレconstラベルに適合させるためにどうしたらいいか?というのがあなたの問うていることだ やっぱりどうしてそんなことがしたいのか全く理解できない
- 710 名前:はちみつ餃子 mailto:sage [2025/09/30(火) 08:58:44.76 ID:0fqHawiZ0.net]
- >>705
オブジェクトがなんらかのストレージを抽象化したものであると考えたらそのオブジェクトが const であるときはセーブ機能を使えないようにしたいというのはわからんでもない。 実際の管理は他の場所でやっていて窓口に過ぎないならメンバ関数に const を付加可能 (だがそうしたくない) なこともあるだろう。 それが良い設計かどうかは脇に置いてそうすることに決めたときに clang-tidy の警告はどうすればいいのかということなら、 例外的な状況なので例外的なものとして無視してもらうしか仕方ないんじゃないか。 NOLINT コメントを書いておくと clang-tidy はその箇所については警告を抑制してくれるよ。
|

|