[過去ログ] 【初心者歓迎】C/C++室 Ver.106【環境依存OK】 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
272(2): 2020/10/24(土)09:38 ID:hkdVUCy1(1) AAS
>>264
テンプレートですか、C++っぽいですね。メタ関数とか、いろいろ自分には新しいトピックが。
area() を実装しているかどうかは... is_callable とかでしょうか。
最悪制約をつけなくても area() がなければコンパイル時にテンプレート展開でエラーに
なって、駄目なことはわかることはわかるんですよね?
>>265
それはルートクラスの設計の話に見えるのですが、今回の場合はもう既に
あるクラスの場合の話でして。その場合はインターフェースクラスを多重継承する
のかな? というのが元の質問です。
273: 2020/10/24(土)10:35 ID:Uy2SF5SV(1) AAS
>>272
まあ仮想関数使って多重継承でいいんじゃね
機能的には必要十分かと
それより設計上の問題として
Polygon : public Area{}
という構造が適切なのかどうなのか疑問
分かりやすさとしては
Rectangle : public Polygon{},Triangle: public Polygon{}・・・
という単なる形状のみの継承クラスと
Graph {Polygon poly; int area();・・・}
省1
274: 2020/10/24(土)11:55 ID:yf0wmlMH(2/2) AAS
>>272
制約を付けなくてもテンプレートを展開してダメだったらエラーになることは保証される。
まあ当たり前っていうかそうせざるを得ないもんね。
でも「(制約を満たさないので) マッチに失敗した」と「マッチして展開した結果にエラーがあった」は意味が違っていて、
結果的に失敗させることを意図するならなるべく前者で失敗させた方が使い勝手はいい。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.969s*