среда, 25 декабря 2013 г.

LockLib update

Обновился LockLib на GitHub: https://github.com/coolsoftware/LockLib.

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'

Листинг. 1.

  1. void RWFunc(const VRWLock&)
  2. {
  3.     //do something here
  4.     //...
  5.     
  6. VLock lock1;
  7. VLock lock2 = lock1; //Ошибка 1
  8. VRWLock rwlock1;
  9. VRWLock rwlock2 = rwlock1; //Ошибка 2
  10. RWFunc(1); //Ошибка 3
  11.      

===
Перепечатка материалов блога разрешается с обязательной ссылкой на blog.coolsoftware.ru

Комментариев нет:

Отправить комментарий