Ошибка компилятора при создании экземпляра std :: mutex

Я широко использовал std :: mutex в своей кодовой базе. Однако один из классов просто не позволяет мне добавить мьютекс в список переменных его экземпляра. Я просто создаю экземпляр мьютекса, используя следующее:

std::mutex myMutex;

Я добавил вышеупомянутое утверждение в закрытый раздел списка участников класса.

Я получаю следующую ошибку —

error C2280: 'std::mutex::mutex(const std::mutex &)' : attempting to reference a deleted function
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\mutex(113) : see declaration of 'std::mutex::mutex'

Класс, который я пытаюсь добавить, мьютекс копируется.

Как я уже сказал, я использовал мьютекс во всей моей кодовой базе, поэтому очень странно, что я не могу создать экземпляр мьютекса в одном месте, в то время как я могу создать экземпляр во всех других местах. Подскажите, пожалуйста, что здесь не так?

3

Решение

Вы добавляете std::mutex в класс с конструктором копирования. Скорее всего, ваш класс имеет конструктор копирования по умолчанию, который используется. Конструктор копирования по умолчанию вызывает конструктор копирования для каждого члена класса. Но std::mutexКонструктор копирования удалён, по спецификации — это не копируемый тип.

5

Другие решения


По вопросам рекламы [email protected]