Обновился LockLib на GitHub: https://github.com/coolsoftware/LockLib.
VLock.h(62): error C2248: 'VUncopyable::VUncopyable' : cannot access private member declared in class 'VUncopyable'
===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru
1. Классы VLock, VRWLock, VLockPtr, VReadLockPtr, VWriteLockPtr теперь "uncopyable", то есть их нельзя скопировать (см. Листинг 1: Ошибка 1 и Ошибка 2). Запрет на копирование осуществляется путем наследования этих классов от VUncopyable. При компиляции кода, содержащего запрещенное копирование, будет выдано сообщение ошибке:
VLock.h(62): error C2248: 'VUncopyable::VUncopyable' : cannot access private member declared in class 'VUncopyable'
2. Конструктор класса VRWLock объявлен с ключевым словом explicit для того, чтобы исключить неявное создание экземпляра этого класса при вызове функции (см. Листинг 1: Ошибка 3). При компиляции кода, содержащего такое неявное создание VRWLock, будет выдано сообщение об ошибке:
TestLock.cpp(184): error C2664: 'RWFunc' : cannot convert parameter 1 from 'int' to 'const VRWLock &'
Reason: cannot convert from 'int' to 'const VRWLock'
Constructor for class 'VRWLock' is declared 'explicit'
TestLock.cpp(184): error C2664: 'RWFunc' : cannot convert parameter 1 from 'int' to 'const VRWLock &'
Reason: cannot convert from 'int' to 'const VRWLock'
Constructor for class 'VRWLock' is declared 'explicit'
Листинг. 1.
- void RWFunc(const VRWLock&)
- {
- //do something here
- //...
- }
- VLock lock1;
- VLock lock2 = lock1; //Ошибка 1
- VRWLock rwlock1;
- VRWLock rwlock2 = rwlock1; //Ошибка 2
- RWFunc(1); //Ошибка 3
===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru
Комментариев нет:
Отправить комментарий