私はクラスにPython反復プロトコルを実装してC++ライブラリを拡張しようとしています。問題は、next()メソッドからStopIteration例外を発生させようとすると、プログラムSegFaultが作成されることです。 http://www.swig.org/Doc1.3/Python.html#Python_nn44swig C++コードからStopIterationを呼び出す方法は?
このリストにはStopIteration例外がリストされていませんが、これは私が試したものですが、これは私が試したことです:
PyErr_SetString(PyExc_StopIteration, NULL);
はい。これは、PythonインタプリタでStopIterationの例外として認識されていないようです。それはループをやめず、永遠に続くだけです。私はこれがエラーを起こすための正しいメカニズムではないかもしれないと思いますか?コードはstderrにそのメッセージを送信するようですが、Pythonの例外は発生しません。 – Oin
@mapleoin:http://stackoverflow.com/questions/1815812/how-to-create-a-generator- iterator-with-the-python-c-api/1816961#1816961まだお持ちでない場合は、 – NPE