2016-03-28 58 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是同一类型的,现在你有这是不允许的