我怎么能取消不知道数据类型的void *?

问题描述 投票:0回答:1

我有一个具有两个不同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;
    }

}

谢谢

c++ void-pointers
1个回答
0
投票

我该如何取消不知道数据类型的void *?

© www.soinside.com 2019 - 2024. All rights reserved.