C++ 成员变量默认初始化模板

C++ 成员变量默认初始化模板,c++,C++,Iam使用不支持c++11的编译器,该编译器不支持类声明的默认初始化 因为我有一个管理可视化的类,它包含大量bool标志和其他成员,所以我想写一些模板类来执行默认的init 我可以实现如下功能: template <unsigned int I> class UIntDef{ public: UIntDef(unsigned int d=I):i(d){ cout << "init i="<<d<<endl; } opera

Iam使用不支持c++11的编译器,该编译器不支持类声明的默认初始化

因为我有一个管理可视化的类,它包含大量bool标志和其他成员,所以我想写一些模板类来执行默认的init

我可以实现如下功能:

template <unsigned int I>
class UIntDef{
public: 
  UIntDef(unsigned int d=I):i(d){
    cout << "init i="<<d<<endl;
  }

  operator unsigned int&(){return i;}

  unsigned int i;
};
模板
类UIntDef{
公众:
UIntDef(无符号整数d=I):I(d){

cout模板参数列表中的语法错误:

template <typename T, T I>
//            ^^^^
模板
//            ^^^^

除此之外,代码完全正确-。

模板参数列表中的语法错误:

template <typename T, T I>
//            ^^^^
模板
//            ^^^^

除此之外,代码完全正确-。

ahhh,我认为it不起作用,因为第二个参数引用了第一个参数。我没有意识到缺少的“name”啊,我认为it不起作用,因为第二个参数引用了第一个参数。我没有意识到缺少的“name”是什么模板的感觉?使用给定值的默认初始化也有效。并且写入
X;
而不是X
X(100)
似乎不是一个好的解决方案,因为代码将有多个实例。其意义是在声明时设置默认值,以避免需要额外将它们添加到初始值设定项列表中。模板的意义是什么?使用给定值进行默认初始化也可以。编写
X;
而不是X
X(100)
似乎不是一个好的解决方案,因为代码将有多个实例。意义在于在声明时设置默认值,以避免需要将它们添加到初始值设定项列表中
template <typename T, T I>
//            ^^^^