我混合了一些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