Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ';博爱';函数内声明_C++_Function Declaration - Fatal编程技术网

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&';