Así que, básicamente este código:¿Por qué se llama al constructor de copia en lugar del constructor de conversión?
class A {
};
class B {
B (const B& b) {}
public:
B(){}
B (const A& a) {}
};
int main()
{
A a;
B b1(a); //OK
B b2 = a; //Error
}
sólo genera un error de B b2 = a
. Y ese error es
error: ‘B::B(const B&)’ is private
¿Por qué está intentando llamar al constructor de copia además del constructor de conversión directa?
Está claro en el mensaje de error que se crea un B
temporal que luego se utiliza para la construcción de copias, pero ¿por qué? ¿Dónde está esto en el estándar?
Es su pregunta está relacionada, por casualidad, con [este] (http://stackoverflow.com/questions/11221242/is-this-a-copy-constructor)? :) –
@EitanT ¿Cómo lo sabes? –
Porque revisé esa pregunta hace unos minutos :) –