Предположим, что у меня есть класс следующим образом:Конструкторы с объектами в качестве параметров
class A{
int x ;
A(int i){
x = i ;
}
}
И у меня есть еще один класс B, который имеет экземпляр класса А в качестве объекта члена.
class B{
int y ;
A obj_a ;
B(int j , A a){
y = j ;
obj_a = a ;
}
}
Когда я делаю следующее:
int main(){
A obj1(1) ; // obj.x has value 1
B obj2(2 , obj1) ;
}
2-я строка выдает ошибку ничего не говоря, вызов функции вида A :: A(). Я знаю, это означает, что конструктор стиля по умолчанию отсутствует, но зачем мне это нужно? obj1 создается с использованием определенного конструктора, так что это не проблема.
Моя текущая мысль состоит в том, что A a
и obj_a = a
будут ссылаться на конструктор копирования, который неявно определен.
Примечание: Для краткости я исключил частную, общественную и т. Д.
Сообщение фактическая ошибка. Ваш ctor, вероятно, жалуется, что это должно быть 'const int i'; – stark
Вы явно просили об этом, не используя список инициализаторов. – kfsone