クラス宣言内で、宣言時にオブジェクト(私が興味を持っているint
/ )の値を宣言する方法はありますか?double
このようなもの:
class MyClass
{
MyInt<1> my_int;
};
これを実装しているライブラリはありますか?
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
。