gpt4 book ai didi

C++ 从传入的引用变量中分配引用变量?

转载 作者:太空宇宙 更新时间:2023-11-04 15:20:43 25 4
gpt4 key购买 nike

我试图避免使用全局变量,因为我不知道代码将来需要如何扩展,所以我希望能够生成具有独立互斥锁的多个线程。我正在尝试将互斥锁和条件变量传递到类构造函数中。

头文件:

class Receiver {
private:
std::mutex & _global_mtx;
std::condition_variable & _global_cv;
bool & state;
public:
// Construct
Receiver(std::mutex &, std::condition_variable &, bool &);
};

代码文件:

/*-------------------------------------
Construct
--------------------------------------*/
Receiver::Receiver(std::mutex & mtx, std::condition_variable & cv, bool & state){
_global_mtx = mtx;
}

这显然会导致问题,因为 _global_mtx 已经声明为引用变量,所以我不确定如何将引用从 mtx 传递到 _global_mtx

此外,我知道在声明引用时,您必须为其分配一个引用值(可能是 NULL),那么有没有比我正在做的更好的处理方法?我确定我不是第一个也是唯一一个遇到这种需求的人,但我不确定到哪里寻找答案。

最佳答案

引用不能默认初始化。他们必须提到一些东西。所以你必须初始化 _global_mutex。在构造函数初始化列表中进行:

Receiver::Receiver(std::mutex & mtx, std::condition_variable & cv, bool & state)
: _global_mtx(mtx),
_global_cv(cv),
state(state)
{
}

这同样适用于其他数据成员。

关于C++ 从传入的引用变量中分配引用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933756/

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