假设我有以下结构:
struct myStruct
{
int x;
int y;
int z;
int w;
};
我想在调用以下函数时将此结构初始化为默认值。如果有帮助,我正在寻找一个简单的零初始化。
void myFunc(myStruct param={0,0,0,0})
{
...
}
然而,这段代码给了我编译错误。我试过VS2003和VS2008。
注意:我看过其他提到使用构造函数的答案。但是,我希望用户查看我用于初始化的值。
假设我有以下结构:
struct myStruct
{
int x;
int y;
int z;
int w;
};
我想在调用以下函数时将此结构初始化为默认值。如果有帮助,我正在寻找一个简单的零初始化。
void myFunc(myStruct param={0,0,0,0})
{
...
}
然而,这段代码给了我编译错误。我试过VS2003和VS2008。
注意:我看过其他提到使用构造函数的答案。但是,我希望用户查看我用于初始化的值。
在您的myStruct中添加默认构造函数将解决您的问题。
struct myStruct {
myStruct(): x(0),y(0), z(0), w(0) { } // default Constructor
int x, y, z, w;
};
函数声明:
void myFunc(myStruct param = myStruct());
对于完全实现值初始化的现代 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