>>399-413
みなさんレスありがとうございます。
実はi)派生させる場合とii)typedefする場合を、
それぞれ試したのですがうまくいかなかった為質問しました。
i)派生させる場合
class A {
private:
double val;
public:
A(const double& rval){val = rval;}
};

class B : public A{};

こうすると、
double val = 0;
B b(val);
が通りません。
B(double&)は存在しなくて、B(const B&)しかないと言われます。

ii)typedefする場合
同じように、constructorまわりでerrorを吐きます。

やはり、constructorの再定義は必要なわけですね。
405さんのも使えそうですね。