2016-05-02 61 views
-4

我試圖將std::vector<T>::iterator轉換爲void *,但得到編譯器錯誤爲錯誤的轉換。有什麼辦法嗎?從std :: vector <T> :: iterator轉換爲void *

+2

你能告訴代碼和相應的錯誤? – NathanOliver

+5

不,沒有辦法做到這一點。如果您通過這樣描述您要解決的問題,您可能會得到解決實際問題的工作解決方案。 (這看起來像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem))。 – molbdnilo

+2

請提供[mcve]。 – Barry

回答

3

剛剛得到的指針與取消引用向量元素:

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

或者矢量數據:

void* data = vec.data(); 
+3

或者只是'void * data = static_cast (vec.data());' – ForceBru

+1

@ForceBru或者甚至放下演員:每個指針都可以隱式地轉換爲(而不是)void *'。 – Quentin

+0

'struct evil {char * operator&()const {return nullptr; }}; std :: vector ':'&'在通用代碼中不可靠。 – Yakk

相關問題