Tôi đang cố gắng triển khai khóa Mutex trên một trong các hàm tĩnh của lớp đơn tấn. Nhưng nhận được lỗi này:Nhận ‘m_Mutex’ được khai báo là tham chiếu nhưng không phải lỗi được khởi tạo
$error:‘m_Mutex’ declared as reference but not initialized
$warning:warning: unused variable ‘m_Mutex’
Đây là đoạn mã của tôi.
======== 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.
}
Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn, Yuvi
khi tôi sử dụng 'LockBlock & localRefToMutex (& MutexImplementation :: m_Mutex);' M nhận 'khởi tạo không hợp lệ tham chiếu không const của loại 'LockBlock &' từ tạm thời kiểu 'pthread_mutex_t *'' nhưng khi tôi sử dụng 'LockBlock localRefToMutex (& MutexImplementation :: m_Mutex); 'nó đang được biên dịch đúng cách. – Yuvi
Tôi đã không vượt quá cú pháp trong khi thực hiện chỉnh sửa. Ngữ nghĩa cũng được tính: 'localRefToMutex' nghĩa là gì? Biểu thức '& MutexImplementation :: m_Mutex' không có kiểu' LockBlock', và thậm chí nếu nó đã làm, nó không phải là một lvalue, vì vậy nó không thể được sử dụng để khởi tạo một tham chiếu đến một 'LockBlock'. –