[C con Clase] const en funciones miembro
Steven Davidson
srd4121 en njit.edu
Jue Jun 19 23:01:19 CEST 2008
Hola Juan,
Juan wrote:
> Reconozco que no se programar...
> Como convierto esta funcion en const
> Si no la declaro como constante me fuciona, pero retorno un puntero a
> un miembro privado de la clase...
Como ya ha explicado Carlos, no puedes modificar el estado del objeto en
una función constante. Sin embargo, haces exactamente esto
explícitamente en el código.
> TCHAR* CListView::GetText(int iRow,int iCol)
> {
> LVITEM LvItem;
> memset(&LvItem,0,sizeof(LVITEM));
> LvItem.mask=LVIF_TEXT;
> LvItem.iSubItem=iCol;
> LvItem.pszText=tText;
> LvItem.cchTextMax=256;
> LvItem.iItem=iCol;
> tText[0]=0;
Aquí, modificas 'tText', que semánticamente es un puntero a caracteres
constantes. O sea, es como si intentaras hacer esto:
CONST TCHAR *tText;
...
tText[0] = 0;
> SendMessage(hCntrl,LVM_GETITEMTEXT, iRow, (LPARAM)&LvItem);
Aquí tienes otro problema, porque supongo que 'hCntrl' es otro miembro
privado. Esta función no acepta un manipulador a ventana constante, y
por tanto implica que 'hCntrl' será modificado. Esto contradice la
"constancia" de la función miembro, 'GetText()'.
> return tText;
Espero que esto aclare las dudas.
Steven
Más información sobre la lista de distribución Cconclase