トップページ > プログラム > 2018年04月16日 > rDfY3L1y

書き込み順位&時間帯一覧

3 位/146 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000001041010000007



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
【初心者歓迎】C/C++室 Ver.102【環境依存OK】

書き込みレス一覧

【初心者歓迎】C/C++室 Ver.102【環境依存OK】
607 :デフォルトの名無しさん[sage]:2018/04/16(月) 12:10:28.34 ID:rDfY3L1y
Java,C#などのプログラマです。
C++にC#などのインターフェースはない代わりに多重継承?できるのでそれを使うとのことで、
https://ideone.com/k7g2nn
ITestAとITestBはインターフェース的なものです。
で、ITestAを実装したCBaseAを作り、CBaseAを継承しITestBを実装したCTestBを
作ったのですが、
CBaseBをnewなど実体化するとITestA::methodAがオーバーライドされておらずCBaseBは
抽象クラスになってて実体化できません。
ITestA::methodAをCBaseBでまた実装しなければいけないんでしょうか??
というかこういう場合C++ではどうすればいいのでしょうか?
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
610 :デフォルトの名無しさん[sage]:2018/04/16(月) 14:01:04.61 ID:rDfY3L1y
>>609
文法エラー??
https://ideone.com/k7g2nnの今回の部分と関係ないエラーは無視してください。
あくまでイメージ目的でそこらへん適当にやりました。
すみません。

https://ideone.com/QxErKY
こっちですね。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
611 :デフォルトの名無しさん[sage]:2018/04/16(月) 14:08:31.72 ID:rDfY3L1y
ちなみに、C#だとこんな感じです。
https://ideone.com/8SZhJ7
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
613 :デフォルトの名無しさん[sage]:2018/04/16(月) 14:32:34.81 ID:rDfY3L1y
もちろん、エラーなくしてコンパイルを通す方法は
>>607の
>ITestA::methodAをCBaseBでまた実装しなければいけないんでしょうか??
で書いたようにすればとりあえず、コンパイルは通ります。
聞きたいのは、
C#の場合はBaseAの方で一度MethodAを宣言・定義すればいいのですが、
C++の場合は毎回CBaseAの派生クラスでmethodAを宣言して定義しなおさなければいけないのでしょうか??
それともC++では他の方法があるのでしょうか?
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
614 :デフォルトの名無しさん[sage]:2018/04/16(月) 14:34:54.92 ID:rDfY3L1y
>>612
あ、すみません。ちょっと被ってしましましたね。>>613は忘れて下さい。
>>612のコードを見てみます。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
615 :デフォルトの名無しさん[sage]:2018/04/16(月) 15:08:36.13 ID:rDfY3L1y
>>612
そっか。純粋仮想関数じゃなくて仮想関数にするって手もありましたか。
まぁ、インターフェース的なクラスの方をいじくるのが気になりますが。
ありがとうございます。
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
618 :デフォルトの名無しさん[sage]:2018/04/16(月) 17:30:50.30 ID:rDfY3L1y
>>616
>>617
色々ありがとうございます。>>617がよさそうなのでこれで行こうかなと思います。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。