C++ 如何为C+中的结构指定默认值+;功能?
我有一个结构:C++ 如何为C+中的结构指定默认值+;功能?,c++,function,struct,C++,Function,Struct,我有一个结构: typedef struct { double x,y,z; } XYZ; 我想定义这样一个函数: double CalcDisparity(XYZ objposition, XYZ eyeposition, double InterOccularDistance = 65.0) double CalcDisparity( XYZ objposition = XYZ(),
typedef struct {
double x,y,z;
} XYZ;
我想定义这样一个函数:
double CalcDisparity(XYZ objposition,
XYZ eyeposition,
double InterOccularDistance = 65.0)
double CalcDisparity( XYZ objposition = XYZ(),
XYZ eyeposition = XYZ(),
double interOccularDistance = 65.0 )
但我似乎找不到一种方法来为眼位置指定默认值。如何在C++中实现这一点? < p> <
struct XYZ{
XYZ( double _x, double _y, double _z ) : x(_x), y(_y),z(_z){}
XYZ() : x(0.0), y(42.0), z(0.0){}
double x, y, z;
};
所以我现在有了一个默认构造函数。然后你这样称呼它:
double CalcDisparity(XYZ objposition,
XYZ eyeposition,
double InterOccularDistance = 65.0)
double CalcDisparity( XYZ objposition = XYZ(),
XYZ eyeposition = XYZ(),
double interOccularDistance = 65.0 )
但有一个小技巧:不能只为第一个和第三个参数设置默认值。还有一件事:C是一种语言,C++是另一种语言。
这些都是编译和工作的方法,但有些可能不是好的编码实践。在
C
中,函数参数不能有默认值(不知道C++
)
在C
中,您可以做的是传递一个(不知何故)无效值,检查该无效值并使用另一个值
int foo(int n) {
if (n == -1) { /* -1 is invalid */
n = 42; /* use 42 instead */
}
/* ... */
}
您可以将最后一个解决方案与我的解决方案的一部分结合起来。您实现了一个实例计数器。如果此计数器为0,则初始化该值。但是计数器只能到达0
也许有帮助@ DrKNEXUS,C++中的结构与一个类完全相同,除了默认情况下成员是公共的,而默认情况下类成员是私有的。就这样。结构可以有构造函数、析构函数、方法,基本上一个类拥有的一切。现在,如果你在谈论C,那么它们又不同了,所以你需要弄清楚你在谈论C++中的哪种语言,所以我编辑了这个问题和标签来删除问题中的C。不要混淆C和C++,它们非常不同。@ diVistCuB23:我认为这只能是C++,因为C没有默认参数。C++是抱歉的。坦率地说,我在编程中遇到问题,所以语言之间的区别就消失了。如果他使用C++,那么他可以把它作为一个结构来做,但是给它一个构造,当给出这个答案时,这个问题被标记为“C”;标签已经被删除,因为C不支持参数的默认值。C++支持默认值。如果定义了其他构造函数,可以(例如:<代码>结构XYZ {XYZ(double x,double z)):x(x x),y(42),z(z z)};双视距(XYZ-objposition=XYZ(),XYZ-eyeposition=XYZ(1.0,2.0),双视距=65.0)代码>