2014-03-28 37 views
0
bool blur(...) {} 

void Effects::genQueue(std::queue<std::function<bool()> > q, std::function<unsigned()> dice){ 
    std::vector< std::function<bool()> > funcs; 
    funcs.push_back(blur); 
} 

我試圖做一個向量的函數,「模糊」是其中一個函數,我不知道這段代碼有什麼問題。轉換爲非標量類型請求(功能)

Error : "error: conversion from 'void (*)(std::queue<std::function<bool()> >, std::function<unsigned int()>)' 
to non-scalar type 'std::function<void()>' requested" 

請求的轉換是什麼?如何解決?

+0

請發佈測試用例,即重現問題的最小代碼示例。 – juanchopanza

回答

0

請求的轉換是什麼?

錯誤很明顯:blur需要兩個參數,所以不能轉換爲不帶參數的函數。 (至少,錯誤消息意味着它需要兩個參數;你發佈的聲明意味着它是可變的,我假設錯誤來自你的真實代碼,而...只是爲了讓問題更難)。

我該如何解決?

不知道你想對這些功能做什麼,很難說。也許你可以改變blur,這樣它就不需要參數;或者您可以將功能類型更改爲與blur兼容;或者您可能會將參數綁定到blur

funcs.push_back(std::bind(blur, something, something_else)); 
+0

感謝您的幫助。我已經添加了允許代碼編譯的正確參數。謝謝。 –

相關問題