创造一个迭代器来遍历类创建的对象
#include <sstream>
#include <string>
#include <vector>
class Example {
public:
Example() {}
void add(const std::string& s)
{
mS.push_back(s);
}
std::vector<std::string>::iterator begin()
{
return mS.begin();
}
std::vector<std::string>::iterator end()
{
return mS.end();
}
private:
std::vector<std::string> mS;
};
#include <boost/python.hpp>
using namespace boost::python;
BOOST_PYTHON_MODULE(boost_eg)
{
class_<Example>("Example")
.def("strings", range(&Example::begin, &Example::end))
.def("add", &Example::add)
;
}
python 代码:
#!/usr/bin/env python
from sys import stdout
from boost_eg import Example
e = Example()
e.add("a")
e.add("b")
e.add("c")
s = []
for i in e.strings():
s.append(i)
print("s",s)
运行结果:
s ['a', 'b', 'c']