2013-02-11 86 views
0

下面的函数声明:定义为ULONG和可选参数的默认值0

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

结果在下面的编译时错误

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

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

+0

@icepack抱歉。谢谢 – pondigi 2013-02-11 21:03:35

回答

2

您正在对Count进行非常量引用,所以默认情况下它不能被赋值为r值。

使用

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

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

1

不能用于非const引用做到这一点。引用指向内存中的地址。除非你特别需要引用语义,否则我建议只传值。