ato*_*erz 5 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.
注意:我已经查看了其他提到构造函数使用的答案.但是,我希望用户看到我用于初始化的值.
将默认构造函数添加到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
| 归档时间: | 
 | 
| 查看次数: | 14132 次 | 
| 最近记录: |