Serviceを読んで理解し、同意したものとみなします。スタック・オーバーフローはプログラマーとプログラミングに熱心な人のためのQ&Aサイトです。1,534件4ストラウストラップのプログラミング入門の第14章の練習問題1がわかりません。派生クラスのコンストラクタが上手くいっていないようです。質問するので、書き方など拙かったらすみません。Circleという基底クラスとSmileyという派生クラスがあります。SmileyにはCircleを三つ入れて顔を描画するつもりです。(最終的にはark_ellipseという同じShapeが基底のクラスのオブジェクトもSmileyにいれたいと思っています。)ちなみにCircleにはさらにShapeという基底クラスがあります。Shapeは抽象クラスでそれぞれの派生クラスでdraw_lines()関数をオーバーライドして図形を描画するプログラムです。ちなみにfltkというグラフィックライブラリを使用しています。全部のコードをのせると長いので抜粋します。これがCircleクラスです。r;};一応draw_lines()ものせます。}}これがSmileyクラスです。face.draw_lines();}ちなみに各クラスが使用しているPointというクラスはこんな感じでwindowのx座標とy座標を指しています。providedという感じのコンパイルエラーが出ます。長くなってしまいましたが、宜しくお願いします。使っているのが誤りです。仰る通り「意味不明なコード」です。派生させる事が要件であれば、例えば以下の様になるでしょう。(輪郭)}書き換えを最小にするならば、以下のようになるでしょう。個の銅バッジ回答ありがとうございます!返信が遅くすみません。こちらの回答の方に承認を付け直させていただきました。うっかりして練習問題の問題文を載せ忘れてしまいましたが正しくはこんな感じでした。「Smiley(笑顔)とFrowny(しかめ面)の二つのクラスを定義せよ。どちらもCircleの派生クラスであり、二つの目と一つの口を持つ。」(ちなみに口はこの時点ではまだ実装できていませんでした。この後無事できました。いう訳で今回は、問題の性質上、Circleの派生クラスとして定義する方がよかったです。SmileyをCircleの派生クラスにするのは、今までのグラフィックスクラスの性質を考えると異質かな、と私は思います。他にも楕円や長方形などのクラスを作ったのですが、それらはすべてShapeが基底クラスです。二つの書き方を教えてくださって本当に感謝しています!大変参考になりました。関係をうまく意識できていないのかな、と思ったので補足。○○は××の一種である、とする関係。○○は××を構成要素のひとつとして持つ、とする関係。こちらは継承ではなくメンバーを持つという形で表現する。なるように考えなければなりません。この辺は考え方ひとつ。(間違った考え方も混ざっているので注意)。スマイリーは3つの円によって顔を構成されるので円の一種この考え方には無理があります。別の例を挙げてみると、三色旗は3つの色によって構成されるから色の一種だ、のような。混同するとこういった発想になってしまうことがありますが、まず間違いだと言えます。継承するのではなく、単純にメンバーとして持ちます。課題の解答としてはこの考え方かな。関係の合わせ技になります。