[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
449
(4): デフォルトの名無しさん [] 2018/04/06(金) 18:11:46 ID:CDFchtjR(1/2) AAS
void Show(const IntArray& array){
...
}

というような関数内で、 array の const メンバ関数ではないメンバ変数を変更しないメンバ関数を
使っているとコンパイルエラーになりますが、それはなぜでしょうか?

コンパイラーはarrayのメンバ関数がメンバ変数を変更していないことはソースコードから
分かるのではないでしょうか?

そういうチェックをするコンパイラを作るのは難しいからということでしょうか?
452: デフォルトの名無しさん [sage] 2018/04/06(金) 19:04:45 ID:zGB1Hjc3(1) AAS
>>449
コンパイル単位を越えたらチェックするのは難しいし言語の壁を越えたら不可能に近いから
中途半端な事をするくらいならconst明示されてるかという線引きの方が分かり易い
453: デフォルトの名無しさん [sage] 2018/04/06(金) 19:43:28 ID:EFVHWowI(1) AAS
>>449
難しいというか不可能だからですよ
呼び出す関数はまだコンパイルされてないかもしれないしまだソースコードもないかもしれない
454: デフォルトの名無しさん [] 2018/04/07(土) 02:18:30 AAS
>>449
メンバ変数を変更しないなら素直にメンバ関数にconst付けれや
456: デフォルトの名無しさん [sage] 2018/04/08(日) 06:44:19 ID:fQMOYFpe(1/3) AAS
>>449-450 の質問者は、分割コンパイルにまだ慣れてないと思えるなぁ。
ソースファイルを分けてみればピンと来るかと。

片方をソースなしのオブジェクトやライブラリにしないとダメかな。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.046s