2016-03-28 6 views
1

Ich habe eine Klasse-Header-Datei wie folgt:Neudefinition der Standardparameter: Parameter 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); 
    .......................... 
} 

Sein geben Fehler: Fehler C2548: 'Utils :: TString :: TString': fehlender Standardparameter für Parameter 2

Ich denke, ich kann Standardwerte in der Header-Datei zuweisen, und das ist richtig; Warum zeigt sich dann dieser Fehler?

Wie kann ich diesen Fehler beheben?

+0

Zuerst erlaubt ist, welchen Zeichensatz sind Sie Kompilieren für? Wenn es MBCS oder "None" ist, wird Ihr Code nicht kompiliert, da 'LPCSTR == LPCTSTR'. Wenn Sie zwischen schmalen und breiten Streichern unterscheiden wollen, sollten Sie einen 'LPCWSTR' und den anderen' LPCSTR' machen. – PaulMcKenzie

Antwort

4

LPCTSTR ist ein const TCHAR String. A TCHAR kann entweder ein char oder wchar_t sein.

LPCSTR ist ein const char String.

Also, wenn TCHAR wird ein char aufgelöst wird dann LPCTSTR und LPCSTR vom gleichen Typ ist und jetzt haben Sie zwei Funktionen mit den exakt gleichen Typen, aber verschiedenen Standardparametern, die nicht