这是我的问题。试图引用已删除的函数,具有互斥成员的结构
我有这样的结构。
struct threadInfo
{
std::condition_variable cv;
std::mutex m;
int priorityLevel;
};
当建立我的代码,我得到这个错误
错误C2280
threadInfo::threadInfo(const threadInfo &)
:尝试 引用删除的功能PriorityListMutex
从我的理解这意味着threadInfo
构造是所谓的,它试图复制mutex
这是不可能的。
我对C++没有多少经验,即使我有点理解发生了什么,我不知道如何尝试解决这个问题。任何帮助将是伟大的!
下面是一个使用ThreadInfo的
threadInfo info;
info.priorityLevel = priority;
priorityListMutex.lock();
for (std::list<threadInfo>::iterator it = threadList.begin(); it != threadList.end(); it++)
{
if ((*it).priorityLevel < info.priorityLevel)
{
threadList.insert(it, info);
break;
}
else if (it == threadList.end())
{
threadList.push_back(info);
break;
}
}
priorityListMutex.unlock();
std::unique_lock<std::mutex> lock(info.m);
info.cv.wait(lock);
我猜结构正在某处存在复制的代码,但我完全缺少的地方。
请发布[MCVE] – Rama
不要复制结构? ('condition_variable'和'mutex'都将它们的拷贝标记为删除) – Borgleader
添加了正在使用结构的代码示例。 – lhbortho