PDA

Visualizza la versione completa : [c++]std e mappe


giuseppe500
20-07-2009, 18:13
sto utilizzando i container dell ' stl , ma non riesco a capire perchè questo codice:
[code]
void CShellDSWire::FindShellWireUsed(map<int, int>* pMapUsedShellDsWire , bool bUndo)
{
pMapUsedShellDsWire[1] = 1;
}
[code]

mi dà quest errore:

c:\MyProjects\backups\CmpFrgDbg\ShellDSWire.cpp(12 22): error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int' (or there is no acceptable conversion)
grazie.

Stoicenko
20-07-2009, 18:34
perchè una map ha l'operatore di assegnazione ( = ) che vuole a sinistra un'altra map.. che strano vero?

Forse tu volevi aggiungere un elemento?

YuYevon
21-07-2009, 08:39
No ma credo sia corretta la sintassi nome_mappa[chiave] = valore... cioè sta assegnando all'elemento della mappa con chiave "chiave" il valore "valore"... il problema è che quella mappa è passata per riferimento, quindi la sintassi corretta sarebbe



(*pMapUsedShellDsWire)[1] = 1


o megio ancora sarebbe ricorrere ai riferimenti del C++ per il passaggio degli argomenti e lasciare tutto inalterato...

Questo sempre ammesso che quel puntatore punti a qualcosa, se no il segmentation fault sarà inevitabile.

Stoicenko
21-07-2009, 09:18
ma infatti.. è quello che dicevo io.. essendo un puntatore l'operatore di selezione [] riguarda il puntatore (come fosse un array quindi) e non la mappa puntata dal puntatore

Loading