我混合了一些C和C++庫,並且只有一個指針可用於在回調函數中執行一些工作。我需要做的就是遍歷一個向量。下面是一個簡化的,未測試的示例:使用不帶容器的迭代器
bool call_back(void* data){
done=...
if (!done) cout << *data++ << endl;
return done;
}
注意,該功能是在C中的extern "C"
塊++。將調用call_back
直到返回true。我希望它在每次調用它時都會關注下一個元素。 data
是一個指向我可以從代碼中的其他地方傳入的指針(上例中的迭代器,但可以是任何東西)。從data
可能會用來計算done
。我看到兩個明顯的選項,給data
:
- 有
data
點到我的矢量。 - 有
data
指向我的向量的迭代器。
我不能使用迭代器沒有.end()方法可用,對吧?我不能單獨使用矢量(除非我可能會開始刪除它的數據)。我可以用矢量和迭代器構造一個結構,但有沒有更好的方法?你會怎麼做?
這個函數只能從C++代碼中調用嗎? – 2010-06-02 04:44:45
是的,我期望它在C++代碼文件中始終是一個外部「C」。 – User1 2010-06-02 12:52:04