gpt4 book ai didi

c++ - 不能使用 boost::shared_mutex

转载 作者:行者123 更新时间:2023-11-30 04:31:15 33 4
gpt4 key购买 nike

我有一个小型模板类,它有一个 boost::shared_mutex 类型的非静态成员。每当我尝试编译它时,我都会收到错误:

“boost::shared_mutex::shared_mutex”:无法访问类“boost::shared_mutex”中声明的私有(private)成员

boost::shared_mutex 确实有一个私有(private)嵌套类shared_mutex,但我不明白为什么会出现这个问题。

这是我的类(class):

#include <boost/thread.hpp>
#include <boost/thread/shared_mutex.hpp>
#include <queue>

template <typename T>
class CThreadSafeQueue
{
public:
CThreadSafeQueue();

private:
boost::mutex _sharedMutex;
std::queue<T> _queue;
};

template <typename T>
CThreadSafeQueue<T>::CThreadSafeQueue()
{

}

常规的 `boost::mutex' 也会发生同样的情况。

我有另一个非模板类,在其中使用任何一种互斥类型都没有问题。

最佳答案

您需要使类不可复制,或实现您自己的复制和赋值运算符。 boost::mutex 不可复制,因此会出现此错误。

您可以从 boost::noncopyable 派生您的类,使其不可复制。

关于c++ - 不能使用 boost::shared_mutex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8289276/

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