[過去ログ] 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
607(2): デフォルトの名無しさん [sage] 2018/04/16(月) 12:10:28 ID:rDfY3L1y(1/7) AAS
Java,C#などのプログラマです。
C++にC#などのインターフェースはない代わりに多重継承?できるのでそれを使うとのことで、
外部リンク:ideone.com
ITestAとITestBはインターフェース的なものです。
で、ITestAを実装したCBaseAを作り、CBaseAを継承しITestBを実装したCTestBを
作ったのですが、
CBaseBをnewなど実体化するとITestA::methodAがオーバーライドされておらずCBaseBは
抽象クラスになってて実体化できません。
ITestA::methodAをCBaseBでまた実装しなければいけないんでしょうか??
というかこういう場合C++ではどうすればいいのでしょうか?
610: デフォルトの名無しさん [sage] 2018/04/16(月) 14:01:04 ID:rDfY3L1y(2/7) AAS
>>609文法エラー??
外部リンク:ideone.comの今回の部分と関係ないエラーは無視してください。
あくまでイメージ目的でそこらへん適当にやりました。
すみません。
外部リンク:ideone.com
こっちですね。
611: デフォルトの名無しさん [sage] 2018/04/16(月) 14:08:31 ID:rDfY3L1y(3/7) AAS
ちなみに、C#だとこんな感じです。
外部リンク:ideone.com
613(1): デフォルトの名無しさん [sage] 2018/04/16(月) 14:32:34 ID:rDfY3L1y(4/7) AAS
もちろん、エラーなくしてコンパイルを通す方法は
>>607の
>ITestA::methodAをCBaseBでまた実装しなければいけないんでしょうか??
で書いたようにすればとりあえず、コンパイルは通ります。
聞きたいのは、
C#の場合はBaseAの方で一度MethodAを宣言・定義すればいいのですが、
C++の場合は毎回CBaseAの派生クラスでmethodAを宣言して定義しなおさなければいけないのでしょうか??
それともC++では他の方法があるのでしょうか?
614: デフォルトの名無しさん [sage] 2018/04/16(月) 14:34:54 ID:rDfY3L1y(5/7) AAS
>>612あ、すみません。ちょっと被ってしましましたね。>>613は忘れて下さい。
>>612のコードを見てみます。
615(1): デフォルトの名無しさん [sage] 2018/04/16(月) 15:08:36 ID:rDfY3L1y(6/7) AAS
>>612
そっか。純粋仮想関数じゃなくて仮想関数にするって手もありましたか。
まぁ、インターフェース的なクラスの方をいじくるのが気になりますが。
ありがとうございます。
618: デフォルトの名無しさん [sage] 2018/04/16(月) 17:30:50 ID:rDfY3L1y(7/7) AAS
>>616>>617色々ありがとうございます。>>617がよさそうなのでこれで行こうかなと思います。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.032s