Voici mon problème.Tentative de référence d'une fonction supprimée, structure avec un membre mutex
J'ai une structure comme celle-ci.
struct threadInfo
{
std::condition_variable cv;
std::mutex m;
int priorityLevel;
};
Lors de la construction de mon code, je reçois cette erreur
Erreur C2280
threadInfo::threadInfo(const threadInfo &)
: tentative de référencer une fonction suppriméePriorityListMutex
De ma compréhension, cela signifie que le constructeur de threadInfo
est appelé et il essaie de copier le mutex
ce qui n'est pas possible.
Je n'ai pas beaucoup d'expérience avec C++ et même si je comprends un peu ce qui se passe, je ne sais pas comment essayer de résoudre ce problème. Toute aide est la bienvenue!
Voici le code qui utilise 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);
Je suppose que la structure est en cours de copie quelque part là-dedans, mais je suis tout à fait disparu où.
S'il vous plaît poster un [MCVE] – Rama
Ne copiez pas le struct? (Tous les deux 'condition_variable' et' mutex' ont leur copie ctor marquée comme suppression) – Borgleader
Exemple de code ajouté de l'endroit où la structure est utilisée. – lhbortho