0

クラス宣言内で、宣言時にオブジェクト(私が興味を持っているint/ )の値を宣言する方法はありますか?doubleこのようなもの:

class MyClass
{
   MyInt<1> my_int;
};

これを実装しているライブラリはありますか?

4

1 に答える 1

3

C++11 では、クラス定義内でデフォルトの初期化子を提供できます。

struct Foo
{
    int a = 11;

    Foo() = default;   // still a trivial class :-)
};

以前は、コンストラクター初期化子を使用する必要がありました。

struct Bar
{
    int b;
    Bar() : b(11) { }  // non-trivial constructor :-(
};

使用法:

Foo x;
Bar y;
assert(x.a == 11 && y.b == 11);

@Msalters のソリューションが役に立つかもしれません。

template <typename T, T InitVal>
struct InitializedType
{
    typedef T type;
    static type const initial_value = InitVal;  // with restrictions

    type &       operator()       { return x; }
    type const & operator() const { return x; }

    InitializedType() : x(Initval) { }

private:
    type x;
};

InitializedType<int, 11> n;のように見えますがint、値で始まるものを取得するために追加できます11

于 2012-07-12T08:03:36.827 に答える