[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
679
(1): デフォルトの名無しさん [sage] 2018/04/27(金) 19:03:28 ID:uctWpHV6(1/4) AAS
>>677
677(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
683(2): デフォルトの名無しさん [sage] 2018/04/27(金) 19:33:05 ID:AimUsleE(1/2) AAS
>>681
それcountが1でも全くループしないというヘンテコ仕様だけど
そんなもの手癖で書くの?
隣り合った2項、例えばv[i] と v[i+1] を用いた処理をするとか
後続のものがある項だけ処理するとか良くある
703
(1): デフォルトの名無しさん [sage] 2018/04/27(金) 21:47:52 ID:uctWpHV6(4/4) AAS
>>701
701(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