2009-08-13 30 views
0

环境转换:Visual Studio 2008中,wxWidgets的2.8.10,Vista的64wxWidgets的问题无法从 '为const char [1]' 到“wxString&W

代码

header.h

#include <wx/wx.h> 

class CSend 
{ 
    CSend(wxString& name = ""); 
    ~CSend(); 
}; 

的main.cpp

#include "header.h" 

void main() 
{ 
    CSend dlg(wxString("Hi")); 
} 

当我编译这个程序,我得到以下错误

错误C2440: '默认参数':无法从 '为const char [1]' 到 'wxString &'

谁能帮我转换?

+0

哪个wxWidgets版本您使用的? – raven 2009-08-14 11:36:12

+0

我正在使用wxWidgets 2.8。10 – 2009-08-14 14:26:42

回答

0

,而不是这一行:

class CSend { CSend(wxString& name = ""); ~CSend(); }; 

试试这个:如果你想他们是翻译和维先通(

class CSend { CSend(wxString& name = wxString()); ~CSend(); }; 
+0

不知道为什么这是downvoted - 这是一个合法的解决方案(虽然可能不是最好的一个) – arolson101 2009-09-02 17:25:34

-1

你只需要引用你的字符串_()),如果你不要,这是我想的Unicode兼容性。在你的情况,这将是:

CSend(wxString& name = _(""));

CSend(wxString& name = wxT(""));

因为这是你可能想,而不是说一个空字符串:

CSend(wxString& name = wxEmptyString);

+0

当我编译此代码,我得到以下错误,“错误C2440:'默认参数':不能转换'常量wxChar * 'to'wxString&'“ – 2009-08-13 15:51:58

+1

你必须做CSend(const wxString&name = wxEmptyString),因为wxEmptyString是一个常量wxChar *。其实,在所有这些例子中你都需要const。 – arolson101 2009-09-02 17:19:39

3

你真的希望改变传递给CSend构造函数的wxString名称的值?如果没有,更改

CSend(wxString& name = ""); 

CSend(const wxString& name = ""); 

我不知道wxString类,但我想它有一个构造函数从字符*。它允许你创建一个类型为wxString的临时类型,它被用作CSend构造函数的默认参数,但它不能绑定到非const引用 - 仅限于const。

相关问题