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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top