2012-08-16 32 views
0

我想填充向量线程;与遍历目录,但即时通讯运行到问题的功能试图填充线程向量与函数 - 错误

这是我有:

//create vector of threads 
vector<thread> threads; 

for(unsigned i=0; i < threadNum; ++i) 
{ 
    threads.push_back(thread(grep(arguments, r))); //best c++ 11 
} 

,这是我得到的错误:

error c2440: '<function-style-cast>': cannot conver from 'void' to std::thread 

任何人都可以解释原因并可能提示答案?谢谢

编辑

grep的是函数名

void grep(Arguments arguments, regex r){} 
+0

是线程一功能?因为如果是的话它可能会返回无效。 – Caesar 2012-08-16 19:52:56

+0

threads.push_back(thread(grep(arguments,r)));你在线程附近放置了“新”吗? – 2012-08-16 19:53:37

+0

threads.push_back(new thread(grep(arguments,r))); – 2012-08-16 19:54:08

回答

3

你大概的意思是说像

threads.push_back(thread(grep, arguments, r)); 

甚至更​​好:

threads.emplace_back(grep, arguments, r); 
+0

将threads.push_back(thread(grep,arguments,r)); 工作,如果我需要传递grep 2参数? – user1084319 2012-08-16 20:09:47

+0

@ user1084319:你试过了吗? – 2012-08-16 20:10:51

+0

我试过了,错误消失了,但是这是如何工作的?因为我需要将这两个参数(参数,r)传递给grep?或者它是否工作,因为它现在将所有东西都转换为线程? – user1084319 2012-08-16 20:16:30