Error de compilacion. Ayuda

Buenas gente:
A ver si me puede ayudar alguien con está duda que tengo.
Estoy con una practica.
¿Por qué me da este fallo de compilacion al declarar la funcion así?

breaking_blocks::breaking_blocks(const pair<unsigned int,unsigned int>& par){

_tablero(par);

}
In constructor ‘breaking_blocks::breaking_blocks(const std::string&)’:
breaking_blocks.cpp:46: error: no hay coincidencia para la llamada a ‘(tablero) (std::pair<unsigned int, unsigned int>&, std::list<char, std::allocator<char> >&)’

Y cuando la pongo así no me da fallo:
breaking_blocks::breaking_blocks(const pair<unsigned int,unsigned int>& par):_tablero(par){}

Sk la verdad no entiendo la sintaxis esa de:
:_tablero(par){}

Aver si me podeis aclarar la duda, sk me ayudaron, y me dijeron que la pusiera como en le segundo caso, pero claro ahora estoy haciendo llamada a otra funcion diferente, y me esta pasando el mismo caso...pero esta vez es mas larga la funcion, no una simple llamada.
Aver si alguien me lo luedo explicar.
PD: Decir, que las cabeceras de la funcion, tanto en el .h .cpp esta revisado en tdos los sitios y coinciden...
Saludos y gracias
En el primer caso que pones estás intentando ejecutar una función llamada '_tablero' (o ejecutar un functor). En el segundo caso, estás llamando al constructor de _tablero.

Es decir, que son cosas muy distintas. Hazte con un libro de C++ antes de seguir....

- ferdy
1 respuesta