Рассмотрим что-то вроде:
struct Parameter
{
int a;
Parameter(){a = 0;}
void setA(int newA){a = newA;}
};
struct MyClass
{
void changeParameter(Parameter &p){ p.setA(-1);}
};
Хорошо, давайте перенесемся вперед, и представьте, что я уже обернул эти классы, выставляя все на python, и представьте, что я создаю экземпляр объекта Parameter в коде C ++, который я передаю скрипту python, и этот скрипт python использует Объект MyClass для изменения экземпляра параметра I, созданного в начале кода C ++.
После того, как этот код выполняется, в C ++ экземпляр параметра не изменяется !!! Это означает, что он был передан по значению (или как-то так: S), а не по ссылке. Но я думал, что объявил, что это передано по ссылке ...
Кажется, я не могу найти документацию Boost :: Python о передаче по ссылке (хотя, похоже, достаточно документов для возврата по ссылке ...). Кто-нибудь может дать намек или указатель, пожалуйста?