2009-08-13 16 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。

相關問題