2016-03-28 61 views
1

我有一個類頭文件象下面這樣:重新定義默認參數:參數2

TString.h

namespace Utils 
{ 
class UTILS_API TString 
{ 
public: 
    TString(const TString& tstr); 
    TString(LPCTSTR tstr = NULL, int len = -1); 
    TString(LPCSTR str, int len = -1); 
    .......................... 
} 

它給錯誤:錯誤C2548: 'utils的:: TString :: TString':缺少參數2的默認參數

我想,我可以在頭文件中分配默認值,這是正確的;那麼爲什麼這個錯誤顯示?

如何清除此錯誤?

+0

首先,什麼字符集完全相同的類型,但不同的默認參數是你們兩個功能編譯?如果它是MBCS或「None」,那麼您的代碼將不會編譯,因爲「LPCSTR == LPCTSTR」。如果你想區分窄字符串和寬字符串,你應該製作一個'LPCWSTR'和另一個'LPCSTR'。 – PaulMcKenzie

回答

4

LPCTSTRconst TCHAR字符串。 A TCHAR可以是charwchar_t

LPCSTR是一個const char字符串。

所以,如果TCHAR被解析爲char然後LPCTSTRLPCSTR是同一類型的,現在你有這是不允許的