es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que estás intentando acceder a un miembro de la clase std::map en una función miembro const. Esto no está permitido, ya que el calificador const indica que la función no puede modificar ningún miembro de la clase. Para solucionar esto, puedes eliminar el calificador const de la función, o iterar a través del mapa en lugar de acceder directamente a él.

Comments are closed.