Programación General > C/C++

 sobrecargar operador []

(1/1)

diego.martinez:
Buenas:

estoy sobrecargando el operador [] en una de mis clases (w32Register : public GRegister) para usarla como un mapa.


--- Código: C++ ---         w32Register Reg;    Reg.Open("SOFTWARE\Empresa");    std::string value=Reg["Root"];  
esto funciona correctamente, la clase abre la carpeta del registro y con el operador [] sobrecargado accedo a los valores. Todo correcto.
pero si hago :


--- Código: C++ ---  GRegister * Reg=new w32Register();     Reg->Open("SOFTWARE\AgotekArtek");    std::string value=Reg["Root"];   
Si lo uso dinamicamente, el compilador me tira : error C2107: illegal index, indirection not allowed
 la definicion del operador la he hecho asi:


--- Código: C++ --- std::string w32Register::operator [](std::string index){       std::string S;    char s[200];    DWORD size=200;     DWORD dwType=0;    LONG ret=RegQueryValueEx(hKey,index.c_str(),NULL,&dwType,(LPBYTE)s,&size);    if (ret!=ERROR_SUCCESS)        return 0;     S=s; //creamos un std::string con el buffer        return S; //lo pasamos por copia}  
Como puedo hacer que el operador [] funcione con objetos dinamicos?
se que podria hacer (*Reg)["root"] pero preferiria poder acceder directamente con los punteros.

Gracias!!

m0skit0:
Lógico, en el segundo ejemplo que pones, Reg es un puntero, no es un objeto GRegister. Prueba con


--- Código: C++ ---std::string value = *Reg["Root"]; A ver qué tal

diego.martinez:
si, ya lo habia probado asi, y funciona, lo que queria saber es si hay forma de indicarle que haga el corchete incluso con punteros, supongo que la respuesta es no  <_<

Gracias igualmente

Navegación

[0] Índice de Mensajes

Ir a la versión completa