定义为ULONG和可选参数的默认值0
问题描述:
下面的函数声明:定义为ULONG和可选参数的默认值0
void Foo:DoSomething(ULONG &Count = 0) { .... }
结果在下面的编译时错误
error C2440: default argument cannot convert from 'int' to 'ULONG &'
什么是创造的正确方法签名,以便当没有为Count
提供参数时,其值将为零。
答
您正在对Count进行非常量引用,所以默认情况下它不能被赋值为r值。
使用
void Foo:DoSomething(const ULONG &Count = 0) { .... }
void Foo:DoSomething(ULONG Count = 0) { .... }
答
不能用于非const引用做到这一点。引用指向内存中的地址。除非你特别需要引用语义,否则我建议只传值。
@icepack抱歉。谢谢 – pondigi 2013-02-11 21:03:35