Поэтому в основном этот код:Почему вместо конструктора преобразования вызывается конструктор конструктора?
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
}
генерирует только ошибку для B b2 = a
. И эта ошибка
error: ‘B::B(const B&)’ is private
Почему он пытается вызвать конструктор копирования в дополнение к конструктору прямого преобразования?
Из сообщения об ошибке видно, что создается временный B
, который затем используется для копирования-строительства, но почему? Где это в стандарте?
ли ваш вопрос связан, случайно, с [этим] (http://stackoverflow.com/questions/11221242/is-this-a-copy-constructor)? :) –
@EitanT как вы узнали? –
Потому что я рассмотрел этот вопрос несколько минут назад :) –