ストラウストラップのプログラミング入門の第14章の練習問題1がわかりません。
C++です。派生クラスのコンストラクタが上手くいっていないようです。
初めて質問するので、書き方など拙かったらすみません。

Circleという基底クラスとSmileyという派生クラスがあります。
SmileyにはCircleを三つ入れて顔を描画するつもりです。
(最終的にはark_ellipseという同じShapeが基底のクラスのオブジェクトもSmileyにいれたいと思っています。)
ちなみにCircleにはさらにShapeという基底クラスがあります。
Shapeは抽象クラスでそれぞれの派生クラスでdraw_lines()関数をオーバーライドして図形を描画するプログラムです。
ちなみにfltkというグラフィックライブラリを使用しています。
全部のコードをのせると長いので抜粋します。

これがCircleクラスです。

struct Circle : Shape {
    Circle(Point p, int rr) // center and radius
    :r{ rr } {
        add(Point{ p.x - r, p.y - r });
    }

    void draw_lines() const;

    Point center() const { return { point(0).x + r, point(0).y + r }; }

    void set_radius(int rr) { r=rr; }
    int radius() const { return r; }
private:
    int r;
};

一応draw_lines()ものせます。

void Circle::draw_lines() const
{
    if (fill_color().visibility()) {    // fill
        fl_color(fill_color().as_int());
        fl_pie(point(0).x,point(0).y,r+r-1,r+r-1,0,360);
        fl_color(color().as_int()); // reset color
    }

    if (color().visibility()) {
        fl_color(color().as_int());
        fl_arc(point(0).x,point(0).y,r+r,r+r,0,360);
    }
}

これがSmileyクラスです。

struct Smiley : Circle {
    Smiley(Point p);

    Circle reye;
    Circle leye;
    Circle face;

    void draw_lines() const;
};

Smiley::Smiley(Point p)
    :reye(Point(p.x+100,p.y+100),50), leye(Point(p.x+300,p.y+100),50), face(Point(p.x,p.y),400) { }

void Smiley::draw_lines() const
{
    reye.draw_lines();
    leye.draw_lines();
    face.draw_lines();
}

ちなみに各クラスが使用しているPointというクラスはこんな感じでwindowのx座標とy座標を指しています。

struct Point {
    int x,y;
    Point(int xx, int yy) : x(xx), y(yy) { }
    Point() :x(0), y(0) { }
};

これを実行すると、

ch14_e1.cpp: In constructor ‘Graph_lib::Smiley::Smiley(Graph_lib::Point)’:
ch14_e1.cpp:67:95: error: no matching function for call to    ‘Graph_lib::Circle::Circle()’
:reye(Point(p.x+100,p.y+100),50), leye(Point(p.x+300,p.y+100),50), face(Point(p.x,p.y),400) { }
                                                                                             ^
ch14_e1.cpp:67:95: note: candidate is:
In file included from GUI.h:13:0,
             from Simple_window.h:10,
             from ch14_e1.cpp:2:
Graph.h:282:2: note: Graph_lib::Circle::Circle(Graph_lib::Point, int)
Circle(Point p, int rr) // center and radius
^
Graph.h:282:2: note:   candidate expects 2 arguments, 0 provided

という感じのコンパイルエラーが出ます。
大変長くなってしまいましたが、宜しくお願いします。