Triangle
とLine
の2つの図形を、基本構造Geometry
から継承したとします。派生構造体は、仮想関数get_area()
を継承し、Triangle
は通常は面積を計算しますが、Line
はget_area()
がLine
に関連しないことを示すエラーを返すはずです。エラーが表示されたら、どの構造体がget_area()
と呼ばれていてどこに(行番号)最後にプログラムを終了するのか知りたいです。コンパイル時または実行時にエラーが表示されるかどうかは関係ありません。どのようにすればいいのですか?仮想関数にエラーが発生する
struct Geometry
{
virtual double get_area() = 0;
};
struct Triangle: Geometry
{
double get_area() override {/* some code. */}
};
struct Line: Geometry
{
double get_area() override {/* give error. */}
};
あなたのデザインを再考する必要はありますか?少なくともあなたの実装は? linesに領域がない場合、 'Line'クラスはそのような関数を持つべきではありませんか? –
'polygon'クラスのメンバである' line'クラスが必要であり、 'polygon'から派生してあなたのシェイプを作ることができるように思えます。 – NathanOliver