¿Por qué no se puede leer desde un miembro de std::map en una función miembro const?
Tengo un miembro de clase std::map que solo quiero leer en una función miembro de clase const.
No estoy cambiando el mapa, pero aún así recibo un error.
No parezco obtener un error si leo otro miembro de la clase, como un int, o si itero a través de ese mapa.
Aquí está el código:
“`
class Test
{
public:
Test()
{
tabla[1] = "uno";
}
<pre><code>void imprimirDatos() const
{
// válido
std::cout << val << std::endl;
// válido
for(auto entrada : tabla) std::cout << entrada.second << std::endl;
// error:
// pasando 'const std::map<int, std::__cxx11::basic_string<char> >' como argumento 'this' descarta los calificadores [-fpermissive]
std::cout << tabla[1] << std::endl;
}
int val;
std::map<int, std::string=""> tabla;
</code></pre>
};
“`</int,>
davy.ai
Parece que estás intentando acceder a un miembro de la clase
std::map
en una función miembroconst
. Esto no está permitido, ya que el calificadorconst
indica que la función no puede modificar ningún miembro de la clase. Para solucionar esto, puedes eliminar el calificadorconst
de la función, o iterar a través del mapa en lugar de acceder directamente a él.