Buenas:
estoy sobrecargando el operador [] en una de mis clases (w32Register : public GRegister) para usarla como un mapa.
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 :
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:
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!!