Задать вопрос
@TiPo

Почему копирующий конструктор не доступен?

Язык: C++

При попытке скомпилировать программу ниже я получаю ошибку о том, что копирующий конструктор не доступен. Скажите пожалуйста, в чём проблема?

Текст ошибки:
Ошибка 1 error C2558: class "Rock": нет доступных конструкторов копии или конструктор копии объявлен как "explicit" c:\program files (x86)\microsoft visual studio 12.0\vc\include\xmemory0 593 1 upr_14_26


Текст программы:
#include <iostream>
#include <vector>

using namespace std;

class Rock {
public:
	Rock(void) { cout << "Rock()" << endl; }
	Rock(Rock&) { cout << "Rock(Rock&)" << endl; }
	void operator=(Rock& rob) {
		cout << "operator=(Rock& rob)" << endl;
	}
	~Rock(void) { cout << "~Rock()" << endl; }
};

int main(void)
{
	vector<Rock> vec;
	Rock arr[3];
	for (int i = 0; i < 3; i++)
		vec.push_back(arr[i]);

	return 0;
}
  • Вопрос задан
  • 3308 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Хекслет
    Фронтенд-разработчик
    10 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
  • Stepik
    Backend разработка
    4 недели
    Далее
  • Merion Academy
    Python программист с нуля
    4 месяца
    Далее
  • Skypro
    Frontend-разработчик с нуля
    9 месяцев
    Далее
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Очевидно вектор хочет копирующий конструктор, который принимает const Rock&.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы