首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-18 
关于warning C4239的问题【必加分!】写了一段代码如下:protected:boolOpenTestReport(wxString&sReportName

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

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

热点排行