0
나는이 코드에서 다음과 같은 오류성병 :: 약속에 대한 포인터의 원인이 문제
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