C++ ';博爱';函数内声明
如果我有如下函数声明:C++ ';博爱';函数内声明,c++,function-declaration,C++,Function Declaration,如果我有如下函数声明: int Remove(Object *spl, Object1* parent, int num, Object2* th = NULL, bool& proceed ); 我得到一个需要声明为“继续”的错误,因为“th”有一个默认参数。我明白为什么。但是,如何在函数声明中为“BoOL”做缺省参数? < P> C++中的所有函数都必须以默认参数结束。这样调用函数是不可能的: Remove(someSpl, somePar
int Remove(Object *spl, Object1* parent,
int num, Object2* th = NULL, bool& proceed
);
我得到一个需要声明为“继续”的错误,因为“th”有一个默认参数。我明白为什么。但是,如何在函数声明中为“BoOL”做缺省参数? < P> C++中的所有函数都必须以默认参数结束。这样调用函数是不可能的:
Remove(someSpl, someParent, 10, /* no argument, use default */, someBool);
因为你不能省略中间的论点,他们必须游荡到最后。
关于澄清问题的第一条评论,让我举一个小例子,将罚款转移到您的申请中:void changingBoolFunction(bool& someBool)
{
someBool = false;
}
bool changeableBool = true;
changingBoolFunction(someBool);
cout << (changeableBool ? "true" : "false"); // output: false
void changingbool函数(bool&someBool)
{
someBool=false;
}
bool changeableBool=true;
改变布尔函数(someBool);
请澄清:th
的值是一个默认参数,而不是初始化。一旦你加入了一个默认参数,之后的每个参数都必须有一个默认参数。通过(可修改的)引用传递的参数具有默认值是不常见的,但如果这是您真正想要的,则必须为该默认参数提供bool
对象:
bool bool_value = true;
int Remove(Object *spl, Object1* parent,
int num, Object2* th = NULL, bool& proceed = bool_value
);
函数返回后,如果它更改了的值,则继续
,该更改将显示在bool\u值
交换顺序中。将默认值放在签名的末尾您不能有布尔引用。@Poriferous-当然可以。@Poriferous我认为您将bool
对象与位字段混淆了。您不能引用位字段,但bool
至少与char
一样大。我理解这一点。让我重新表述我的问题。如何在:int Remove(Object spl,Object1 parent,bool&procedue,int num=0,Object2*th=NULL)中初始化'bool&';