[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
679(1): デフォルトの名無しさん [sage] 2018/04/27(金) 19:03:28 ID:uctWpHV6(1/4) AAS
>>677677(1): デフォルトの名無しさん [sage] 2018/04/27(金) 18:21:42 ID:qED012zx(1/2) AAS
外部リンク:ideone.com
上記のコードで、read関数を持ったIReadableクラス(基底クラス)があって、そのクラスから派生したCFileReaderクラス、
直接は派生していないけどread関数を持ったCMemoryReaderクラスがあって、その両方を受け取れるvector<IReadable*>を作りたいのですがコンパイルが通りません。
どうしたらいいでしょうか? どなたか教えてください。。。
なんとなく互換性のある read を持つものをエンベロープして IReadable になるエンベロープクラスを用いるのはどう?
ifstream も IReadable じゃないからエンベロープする。
外部リンク:ideone.com
681(1): デフォルトの名無しさん [sage] 2018/04/27(金) 19:18:38 ID:uctWpHV6(2/4) AAS
for ループといえばつい手癖で
for (int i =0; i < count-1; ++i ) {...}
と書いてて、
後日に count を int から size_t にしたとき
countが0のケースではまったことがあるなあ
for (int i =0; i + 1 < count; ++i ) {...}
と書けば良いだけなんだけど
684: デフォルトの名無しさん [sage] 2018/04/27(金) 19:37:07 ID:uctWpHV6(3/4) AAS
>>683隣り合った2項、例えばv[i] と v[i+1] を用いた処理をするとか
後続のものがある項だけ処理するとか良くある
703(1): デフォルトの名無しさん [sage] 2018/04/27(金) 21:47:52 ID:uctWpHV6(4/4) AAS
>>701701(1): デフォルトの名無しさん [sage] 2018/04/27(金) 21:19:24 ID:wnXDwKhi(6/7) AAS
>>699
ありがとうございます。
ちょっと回答が理解できないため、質問を代えさせてください
以下のプログラムの func はNGなのに func2 はOKなのはなぜでしょうか?
それは c / c++ の欠点の1つで、
T * は const T * に文句も言わず変換してくれるが
T ** は const T ** に変換してくれないという問題
T は const T と定数性以外 compatible だよね、という判断を 1 段階しかしてくれない。
キャストが必要
const_cast<const int**>(a) など
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.071s