0
我是從這個代碼收到以下錯誤一個指向一個std ::承諾造成的問題
error: void value not ignored as it ought to be
*ptr->set_value(true);
make: *** [make] Error 1
std::vector<std::promise<bool>*> prs;
void xyz(){
std::promise<bool> pr;
prs.push_back(&pr);
std::future<bool> f = pr.get_future();
bool result = f.get();
}
void foo(void){
std::thread t(xyz);
std::this_thread::sleep_for(std::chrono::milliseconds(5));
for(std::promise<bool>* ptr: prs){
*ptr->set_value(true);
}
t.join();
}
int main(void){
foo();
return 0;
}
我明白,「不忽略空值」通常意味着你試圖在不合適的地方使用void值,但在這個例子中我看不到這個值。
拿地址'&pr'完全不可行。 –
(但句法上你只想'ptr-> set_value(true);'。) –
@KerrekSB謝謝,問題解決了。而不是使用&pr我用std :: promise * pr = new std :: promise ();所以我可以直接傳遞指針,然後刪除*做到了。涼。 –
Gottfried