读书人

关于warning C4239的有关问题【必加分

发布时间: 2012-03-18 13:55:38 作者: rapoo

关于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() );

[解决办法]
那就不要提供默认参数
[解决办法]
汗!
你的修改发生在一个“临时变量”身上,函数调用结束后,“修改”就自动丢失了,能有意义么?
你不会在调用者那儿先声明一个局部变量,再用这个局部变量调用这个函数么。

读书人网 >C++

热点推荐