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

The analyzer has detected a potential error: creating an object of the 'T' type in an incorrect way.

This error usually occurs when an argument of a call of a constructor of a certain type is missing. In this case, we'll get a declaration of a function returning the 'T' type instead of creating an object of the type we need. This error usually occurs when using auxiliary classes that simplify mutex locking and unlocking. For example, such is the 'QMutexLocker' class in the 'Qt' library that simplifies handling of the 'QMutex class'.

Consider an example of incorrect code:

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

What is dangerous about these errors is that code is compiled and executed without errors. But you won't get the result you need. That is, other threads using the 'objectVarCounter' variable are not locked. That's why such errors take much time and effort to catch.

This is the fixed code:

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

This diagnostic is classified as:

CWE-664