Kann nicht von 'const wchar_t *' in '_tchar *' konvertiert werden.
-
14-09-2019 - |
Frage
_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;
//Assign some value to strTempName
strGroupName = _tcschr(strTempName, 92) //C2440
Ich erhalte einen Fehler in der obigen Zeile, während ich diesen Code in VS2008 kompiliere. In VC6 kompiliert es fein.
Fehler C2440: '=': Kann nicht von 'const wchar_t *' zu '_tchar *' konvertieren.
Was scheint das Problem zu sein und wie behebe ich es?
Lösung
Versuchen Sie es als wirken als
strGroupName = (_TCHAR*)_tcschr(strTempName, 92);
Mir scheint, dass VS2008 ein wenig strenger für Typ -Casts geworden ist und sie in einigen Fällen nicht automatisch tun wird.
Andere Tipps
strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));
Dies liegt daran, dass die Variante der von Ihnen verwendeten Funktion einen const _tchar* als Eingabe hat und ein const _tchar* zurückgibt.
Eine andere Variante wäre, dass Strtempname als _tchar*deklariert wird, und nicht als const _tchar*. In diesem Fall wird die Variantenfunktion mit einem _tchar* -Parameter und einem _tchar* -Wert verwendet.
strGroupName
sollte auch ein Zeiger sein const
.
const _TCHAR* strGroupName = _tcschr(strTempName, 92);
Es ist nicht erforderlich, es bis zum Anruf zu erklären, es zu initialisieren.
_tcschr
Gibt einen Const -Zeiger zurück. Daher sollte der Rückgabewert sein const _TCHAR* strGroupName = NULL;
Wenn es nicht möglich ist, StrGroupname in einen Const-Zeiger zu ändern, deklarieren Sie beide Zeiger als nicht konstante Zeiger.