Więc w zasadzie ten kod:Dlaczego zamiast konstruktora konwersji wywoływany jest konstruktor kopiowania?
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
}
generuje tylko błąd na B b2 = a
. I ten błąd jest
error: ‘B::B(const B&)’ is private
Dlaczego próbuje wywołać konstruktora kopiowania oprócz bezpośredniego konstruktora konwersji?
Z komunikatu o błędzie wynika, że został utworzony tymczasowy kod B
, który jest następnie używany do tworzenia kopii, ale dlaczego? Gdzie to jest w standardzie?
Czy twoje pytanie związane, przez przypadek, do [tego] (http://stackoverflow.com/questions/11221242/is-this-a-copy-constructor)? :) –
@EitanT Skąd wiedziałeś? –
Ponieważ sprawdziłem to pytanie kilka minut temu :) –