gpt4 book ai didi

C++将互斥锁传递给构造函数中的成员变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:21:11 26 4
gpt4 key购买 nike

我在向类(class)传递互斥体时遇到问题。我有一个名为 Test 的类,其中有一个名为 m_Mutex 的成员变量。在构造函数中,我想将参数 mutex 传递给 m_Mutex

我的类(class):

#include <mutex>

class Test
{
public:
Test(mutex &mtx) :
m_Mutex(mtx)
{
}

private:
mutex m_Mutex;
};

我的主要内容:

int main()
{
mutex mutex1;
Test t(mutex1);
return 0;
}

错误:

function "std::mutex::mutex(const std::mutex &)" (declared at line 88 of "c:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\mutex") cannot be referenced -- it is a deleted function

为什么我会收到此错误?如何解决才能传递互斥锁?

最佳答案

简而言之:你不能。互斥体既不可复制也不可移动。而且他们没有充分的理由。然而,如果你想实现这一点,你可以使用 unique_ptr 来传递它:

class A {
unique_ptr<mutex> mutexPtr;

A(unique_ptr<mutex> ptr) : mutexPtr(std::move(ptr)) { }
};

A a{std::make_unique<mutex>()};

注意,如果你想在不同的对象之间共享互斥量,你应该使用 shared_ptr 或 weak_ptr 来代替。

关于C++将互斥锁传递给构造函数中的成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46850018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com