C++ 从std::vector::迭代器到void的转换*

C++ 从std::vector::迭代器到void的转换*,c++,c++11,vector,iterator,C++,C++11,Vector,Iterator,我正在尝试将std::vector::iterator转换为void*,但得到的编译器错误是错误的转换。有什么办法吗?只需将指针指向具有取消引用的向量元素: vector<Type>::iterator i = ...; void* data = &*i; 你能显示代码和适用的错误吗?不,没有办法。如果您描述了您试图通过这样做来解决的问题,您可能会得到实际问题的有效解决方案。这看起来像一个。请提供一个。如果编译器正在抱怨,那么您可能做了一些非常糟糕的事情。或者只是void*

我正在尝试将std::vector::iterator转换为void*,但得到的编译器错误是错误的转换。有什么办法吗?

只需将指针指向具有取消引用的向量元素:

vector<Type>::iterator i = ...;
void* data = &*i;

你能显示代码和适用的错误吗?不,没有办法。如果您描述了您试图通过这样做来解决的问题,您可能会得到实际问题的有效解决方案。这看起来像一个。请提供一个。如果编译器正在抱怨,那么您可能做了一些非常糟糕的事情。或者只是void*data=static\u castvec.data@ForceBru甚至删除强制转换:每个指针都可以隐式转换为void*.struct-evil{char*操作符&const{return nullptr;};std::vector:&在泛型代码中不可靠。Yakk,有关泛型地址的讨论,请参阅此问题:
void* data = vec.data();