Domanda

_TCHAR* strGroupName = NULL;
const _TCHAR* strTempName = NULL;

//Assign some value to strTempName

strGroupName = _tcschr(strTempName, 92) //C2440

ottengo un errore alla riga sopra durante la compilazione di questo codice in VS2008. In VC6 si compila bene.

  

C2440 Errore: '=': non può convertire da   'Const wchar_t *' a '_TCHAR *'

Quello che sembra essere il problema e come posso risolvere il problema?

È stato utile?

Soluzione

Prova a trasmettere come

strGroupName = (_TCHAR*)_tcschr(strTempName, 92);

Mi sembra che VS2008 ha un po 'più rigorosa sul tipo getta, e non automaticamente li fare in alcuni casi.

Altri suggerimenti

strGroupName = const_cast<_TCHAR*>( _tcschr(strTempName, 92));

Questo perché la variante della funzione che si sta utilizzando ha una _TCHAR const * come input e restituisce un _TCHAR const *.

Un'altra variante potrebbe essere quella di avere strTempName dichiarato come _TCHAR *, e non _TCHAR come const *. In questo caso, * parametro e restituendo un valore _TCHAR * viene utilizzata la funzione variante avente una _TCHAR.

strGroupName dovrebbe anche essere un puntatore a const.

const _TCHAR* strGroupName = _tcschr(strTempName, 92);

Non c'è bisogno di dichiararla fino a quando la chiamata per inizializzare esso.

_tcschr sta tornando un puntatore const. Quindi il valore di ritorno dovrebbe essere const _TCHAR* strGroupName = NULL; Se non è possibile cambiare strGroupName ad un puntatore const poi dichiarare entrambi i puntatori come puntatori non-const.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top