﻿# V644\. Suspicious function declaration\. Consider creating a 'T' type object\.

Анализатор обнаружил потенциальную ошибку, связанную c неправильным созданием объекта  типа 'T'\.

Как правило, такая ошибка возникает, если пропущен аргумент вызова конструктора данного типа\. В таком случае вместо создания объекта нужного типа, получится объявление функции, возвращающей тип 'T'\. Данная ошибка, как правило, возникает при использовании вспомогательных классов, упрощающих  блокирование и разблокирование мьютексов\. Например, в библиотеке 'Qt' таким классом является 'QMutexLocker', который упрощает работу с классом 'QMutex'\.

Рассмотрим пример некорректного кода:

```cpp
QMutex mutex;
...
QMutexLocker lock();
++objectVarCounter;
```

Опасность такого рода ошибок в том, что данный код компилируется и выполняется без ошибок\. Однако требуемого результата получено не будет\.  То есть не происходит блокирование других потоков, использующих переменную 'objectVarCounter'\. Поэтому выявление таких ошибок может занять много времени и сил\.

Корректный вариант кода:

```cpp
QMutex mutex;
...
QMutexLocker lock(&mutex);
++objectVarCounter;
```