我已存儲std::function
,這是std::bind
結果替換調用值,在列表中:性病::功能
typedef std::pair<int, std::function<void(HDC)>> myPair;
std::list<myPair> *paintJobs;
paintJobs = new std::list<myPair>();
我然後我補充這樣的:
int id = 1;
int x = 0;
int y = 0;
int width = 100;
int height = 100;
int r = 255;
int g = 0;
int b = 0;
std::function<void(HDC)> func = std::bind(&Window::drawRect, this, std::placeholders::_1, x, y, width, height, r, g, b);
paintJobs->push_back(std::make_pair(id, func));
在我繪製方法我通過列表並調用所有函數,我已經添加了。這部分運作良好。
但現在,我想換例如色(R,G和B):
void changeColor(int id, int r, int g, int b) {
for(auto elem = paintJobs->begin(); elem != paintJobs->end(); ++elem) {
if(elem->first == id){
//change the 6th, 7th and 8th parameter of elem->second
}
}
}
我的另一個想法是插入一個新條目,並複製舊的價值觀,但在其他問題:獲取綁定值。
那麼,我該如何替換參數的邊界值或獲取其他參數的值呢?
[OT]:'std :: list * paintJobs;'...不必要的指針,'std :: list paintJobs;'可能是你想要的。 –
Jarod42
這是一個更復雜的嵌入類,因此指針 –
如果你想改變「成員」,那麼你應該創建一個仿函數並提供對它們的訪問。然後你可以存儲該函數而不是'std :: function'。 – NathanOliver