struct参数的默认值

时间:2013-03-09 06:25:33

标签: c++ struct initialization default-value static-initialization

假设我有以下结构:

struct myStruct
{
 int x;
 int y;
 int z;
 int w;
};

我想在调用以下函数时将此结构初始化为默认值。如果它有助于我正在寻找一个简单的零初始化。

void myFunc(myStruct param={0,0,0,0})
{
 ...
}

但是这段代码给了我编译错误。我试过VS2003和VS2008。

注意:我看过其他提到构造函数使用的答案。但是我希望用户看看我用于初始化的值。

2 个答案:

答案 0 :(得分:6)

myStruct 中添加默认构造函数将解决您的问题。

struct myStruct {
   myStruct(): x(0),y(0), z(0), w(0) { }   // default Constructor
   int x, y, z, w;
};

功能声明:

void myFunc(myStruct param = myStruct());

答案 1 :(得分:2)

对于完全实现值启动的现代C ++编译器,只需将以下值初始化的默认值设置为零启动myStruct的数据成员:

myFunc(myStruct param=myStruct())

对于其他编译器,您应该使用以下内容:

myStruct zeroInitilizer() {
   static myStruct zeroInitilized;
   return zeroInitilized;
}
myFunc(myStruct param=zeroInitilizer())

为避免编译器细节考虑使用http://www.boost.org/doc/libs/1_53_0/libs/utility/value_init.htm