今のところ、G ++とVC++ 2010の両方は継承コンストラクタをサポートしていません。継承コンストラクタは、既存のすべてのC++コンパイラでサポートされていないのはなぜですか?
しかし、これはC++ 0xの中で最も美しいものだと思います。コンパイラで実装するのはむしろ簡単だと思います。
なぜこの機能はコンパイラには興味がありませんか?
は、私はこのようなのstd ::文字列を継承して自分自身の文字列クラスを設計したいと仮定しますclass MyString : public std::string
{
public:
// I have to redefine many overloaded ctors here and forward their arguments to
// std::string's ctors. How tedious it will be!!!
};
美しいコード例:
struct B1
{
B1(char);
};
struct B2
{
B2(double);
B2(int);
};
struct D1 : B1, B2
{
using B1::B1; // D1(char)
using B2::B2; // D1(double), D1(int)
};
D1 d('c'); //OK, invokes D1(char)
"美しいコード例"の問題:D1のB2部分はどのように初期化されていますか? – UncleBens
@UncleBens、私はそれがデフォルトで初期化されているか、または初期化されていないはずだと思います。 – xmllmx
'std :: string'は派生するものではありません(または他のSTLコンテナから派生するものではありません)。 – fredoverflow