我有一个具有两个不同std::multimap
的结构。我想做这样的事情,但是,如何取消广播我不知道数据类型是的void*
?
struct Data{
std::multimap<uint64_t,uint64_t, std::greater<uint64_t>> b;
std::multimap<uint64_t,uint64_t, std::less<uint64_t>> s;
};
Data data;
void do_something(bool c){
void* pointer;
uint64_t cumulative = 0;
if(c){
pointer = &data.b;
} else {
pointer = &data.s;
}
/* Here I don't know if pointer is
* std::multimap<uint64_t,uint64_t, std::greater<uint64_t>>
* or
* std::multimap<uint64_t,uint64_t, std::less<uint64_t>>
*/
for(auto it = (*pointer).begin(); it != (*pointer).end(); ++it){
cumulative += it->second;
}
}
谢谢
我该如何取消不知道数据类型的void *?