3
私はboost 1.57を使用してPythonを強化します。ここに私のコードの例です。このリストにboost python list演算子[]を使用するとエラーが発生する項目を取得します
list records = call_method<list>(...);
object attr = records.attr("__len__")();
int n = extract<long>(attr);
for (int i = 0; i < n; ++i)
{
records[i];
}//here cause error
私はいくつかのタプルのpythonからの文字列が含まれて保存されています。この範囲外のレコード[i]はPy_DECREFを呼び出し、エラーを引き起こすようです。それで、アイテムからデータを取得するにはどうすればよいですか?
'レコードの[i]はどのようなものです;'行うことになって? 'list'とは何ですか?私は 'std :: list'を想定していません。ランダムアクセスがないからです。エラーは何ですか? – doctorlove
'list'はboost :: python :: listです。まず、boost :: python :: call_method>>(...) 'を使用して結果を得るが、プログラムがクラッシュする。それから、結果を保持するために 'boost :: python :: list'を使うべきであることがわかりました。しかし、 'boost :: python :: object obj = records [i]'を '〜object_base()'の 'Py_DECREF'にクラッシュさせるとループスコープを使い果たしてしまいます。だから私は正しくする必要がありますか? –
webberg