C++ 定义ULONG的默认值&;可选参数为0

C++ 定义ULONG的默认值&;可选参数为0,c++,methods,compiler-errors,default-parameters,C++,Methods,Compiler Errors,Default Parameters,以下函数声明: void Foo:DoSomething( ULONG &Count = 0) { .... } 导致以下编译时错误 错误C2440:默认参数无法从“int”转换为“ULONG&” 创建签名的正确方法是什么,以便在没有为Count提供参数时,其值将为零 您正在使用一个非常量引用进行计数,因此默认情况下不能为其分配r值 使用 void Foo:DoSomething(constulong&Count=0){….} void Foo:DoSomething(ULONG Co

以下函数声明:

void Foo:DoSomething( ULONG &Count = 0) { .... }
导致以下编译时错误

错误C2440:默认参数无法从“int”转换为“ULONG&”


创建签名的正确方法是什么,以便在没有为
Count
提供参数时,其值将为零

您正在使用一个非常量引用进行计数,因此默认情况下不能为其分配r值

使用

void Foo:DoSomething(constulong&Count=0){….}


void Foo:DoSomething(ULONG Count=0){..}

您正在对Count进行一个非常量引用,因此默认情况下无法为其分配r值

使用

void Foo:DoSomething(constulong&Count=0){….}


void Foo:DoSomething(ULONG Count=0){..}

对于非常量引用,不能执行此操作。引用指向内存中的地址。除非您特别需要引用语义,否则我建议只传递值。

对于非常量引用,您不能这样做。引用指向内存中的地址。除非您特别需要引用语义,否则我建议只传递值。

@icepack对此表示抱歉。Thanks@icepack很抱歉。谢谢