【发布时间】:2016-04-02 10:14:26
【问题描述】:
当我编译 main.cpp 时,我遇到了这些错误:
prod_cons.hpp:26:8:注意:'pile_params::pile_params(const pile_params&)' 被隐式删除,因为默认定义格式不正确: 结构堆参数{
main.cpp
pile_params pile_analyse(url_racine);
pile_params pile_telechargement(url_racine);
vector_params vect_all_pages();
vector<thread> threads_analyse;
vector<thread> threads_telechargement;
for(int i=0; i<nb_th_get;i++){
threads_telechargement[i] = thread(telecharger,pile_telechargement,pile_analyse,vect_all_pages);
}
for(int i=0; i<nb_th_analyse;i++){
threads_telechargement[i] = thread(analyser,profondeur,pile_telechargement,pile_analyse,vect_all_pages);
}
prod_cons.hpp
struct pile_params{
deque<string> deck;
stack<string> pile;
string url_racine;
condition_variable_any plein;
condition_variable_any vide;
mutex mut;
pile_params(string _url_racine) :
pile(deck), url_racine(_url_racine), plein(), vide(), mut(){}
};
struct vector_params{
vector<page> vect;
condition_variable_any plein;
condition_variable_any vide;
mutex mut;
vector_params(void) :
vect(), plein(), vide(), mut(){}
};
即使查看其他有关错误的主题,我也无法解决这个问题。
【问题讨论】:
-
我认为问题不在于互斥体
-
你错了,艾莎。
std::mutex是不可复制的。结果是包含一个的struct或class也是不可复制的,因此复制构造函数的格式不正确,无法为其生成。尝试同时删除mutex和condition_variable成员(两者都是不可复制的),您会发现问题消失了。
标签: c++ struct constructor compiler-errors g++