C++类型转换void*转map

预先有自定义类型Object如下:

class Object{
public:
    string type;
    void* value;
public:
    Object(string _type, void* _value) : type(_type), value(_value) {}
};

接着有个函数返回一个变量Object* objP, 其堆中对应的值:type是string类型的值"map", valuemap<string, Object*>*void* 类型的指针。然后问题来了,无法把 void* 转回 map 类型从而无法拿到value对应的值。
试过以下方法都不行:

map<string, Object*>* objMapP = (map<string, Object*>*)objP->value;
map<string, Object*> objMap = *((map<string, Object*>*)ObjP->value);
reinterpret_cast
static_cast

请大神赐教

阅读 4.5k
1 个回答

可以转呀

class Object{

public:

std::string type;

void* value;

public:

Object(std::string _type, void* _value) : type(_type), value(_value) {}

};

int main()

{

std::map<std::string, Object*>* tmp = new std::map<std::string, Object*>();

(*tmp)["hello"] = nullptr;

Object* ptr = new Object("map", tmp);

std::map<std::string, Object*>* p = (std::map<std::string, Object*>*)ptr->value;

auto it = p->find("hello");

assert(it != p->end());

return 0;

}

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题