次のようなものを検討してください。
struct Parameter
{
int a;
Parameter(){a = 0;}
void setA(int newA){a = newA;}
};
struct MyClass
{
void changeParameter(Parameter &p){ p.setA(-1);}
};
さて、早送りしましょう。すでにこれらのクラスをラップして、すべてを Python に公開していると想像してください。また、C++ コードで Parameter のオブジェクトをインスタンス化し、それを Python スクリプトに渡し、その Python スクリプトが MyClass オブジェクトを使用してC++ コードの最初に作成した Parameter のインスタンスを変更します。
そのコードが実行された後、C++ の Parameter インスタンスは変更されません!!! これは、参照ではなく、値 (または同様のもの:S) で渡されたことを意味します。しかし、私はそれを参照渡しと宣言したと思っていました...
参照渡しに関する Boost::Python のドキュメントが見つからないようです (ただし、参照渡しに関する十分なドキュメントがあるようです...)。誰かヒントやポインタを教えてください。