0

以下函数声明:

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

导致以下编译时错误

error C2440: default argument cannot convert from 'int' to 'ULONG &'

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

4

2 回答 2

2

您正在对 Count 进行非常量引用,因此默认情况下不能使用 r 值分配它。

利用

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

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

于 2013-02-11T20:53:05.193 回答
1

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

于 2013-02-11T20:58:42.990 回答