有没有办法在声明时在类声明中声明对象的值(我对int
/ double
感兴趣?)?像这样:
class MyClass
{
MyInt<1> my_int;
};
有没有实现这个的库?
答案 0 :(得分: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
开头。