关于warning C4239的问题【必加分!】
写了一段代码如下:
protected:
bool OpenTestReport(wxString & sReportName=wxString());
出现如下warning:
warning C4239: nonstandard extension used : 'default argument ' : conversion from 'class wxString ' to 'class wxString & '
A reference that is not to 'const ' cannot be bound to a non-lvalue
请问怎么解决,谢谢!
[解决办法]
所谓的默认参数,就是在编译连接时,编译器就知道了参数的值。
而wxString(),是调用某个函数吧,它的返回值在运行时才知道,当然不行了。
[解决办法]
临时变量不能绑定到普通的引用中
要用const 引用
bool OpenTestReport( const wxString & sReportName = wxString() );
[解决办法]
那就不要提供默认参数
[解决办法]
汗!
你的修改发生在一个“临时变量”身上,函数调用结束后,“修改”就自动丢失了,能有意义么?
你不会在调用者那儿先声明一个局部变量,再用这个局部变量调用这个函数么。