Estoy tratando de implementar Mutex lock en una de mis funciones estáticas de clase de una tonelada. Pero obteniendo este error:Obteniendo 'm_Mutex' declarado como error de referencia pero no inicializado
$error:‘m_Mutex’ declared as reference but not initialized
$warning:warning: unused variable ‘m_Mutex’
Aquí está mi fragmento de código.
======== Commondefines.h ==========
/**
*@class LockBlock
*This class is used to provide Mutex Lock on thread.
*/
class LockBlock
{
public:
LockBlock(pthread_mutex_t *mutex)
{
lockMutex = mutex;
pthread_mutex_lock(lockMutex);
};
~LockBlock()
{
pthread_mutex_unlock(lockMutex);
lockMutex = NULL;
}
private:
pthread_mutex_t *lockMutex;
};
======== MutexImplenation.h ======
#include "CommonDefines.h"
class MutexImplementation
{
private:
static pthread_mutex_t m_Mutex ;
public:
static void commonFunction();
};
==== MutexImplementation.cpp ==========
// Initialize static member of class.
pthread_mutex_t MutexImplentation::m_Mutex = PTHREAD_MUTEX_INITIALIZER;
void commonFunction()
{
LockBlock(&m_Mutex); // Here I am getting this error.
}
Cualquier ayuda sería muy apreciada. Gracias, Yuvi
cuando uso 'LockBlock & localRefToMutex (& MutexImplementation :: m_Mutex);' M obteniendo 'inicialización no válida de referencia no constante del tipo 'LockBlock &' de un temporal de tipo 'pthread_mutex_t *'' pero cuando uso 'LockBlock localRefToMutex (& MutexImplementation :: m_Mutex); 'se está compilando correctamente. – Yuvi
No miré más allá de la sintaxis al hacer la corrección. La semántica también cuenta: ¿a qué se refiere 'localRefToMutex'? La expresión '& MutexImplementation :: m_Mutex' no tiene el tipo' LockBlock', e incluso si lo hizo, no es un lvalue, por lo que no puede usarse para inicializar una referencia a 'LockBlock'. –