Considérez quelque chose comme:passe par référence dans Boost :: Python
struct Parameter
{
int a;
Parameter(){a = 0;}
void setA(int newA){a = newA;}
};
struct MyClass
{
void changeParameter(Parameter &p){ p.setA(-1);}
};
Eh bien, nous allons avancer rapidement, et imaginez je l'ai déjà enveloppé ces classes, ce qui expose tout à python, et imaginez aussi que j'instancier un objet de paramètre dans le code C++, que je passe au script python, et ce script python utilise un objet MyClass pour modifier l'instance du paramètre I créé au début dans le code C++. Après l'exécution de ce code, l'instance de paramètre C++ est inchangée. Cela signifie qu'il a été passé par valeur (ou quelque chose de semblable: S), pas par référence. Mais je pensais l'avoir déclaré par référence ...
Je n'arrive pas à trouver la documentation Boost :: Python sur le passage par référence (bien qu'il semble y avoir assez de doc pour revenir par référence ...) . Quelqu'un peut-il donner un indice ou un pointeur s'il vous plaît?
Après avoir ajouté un point-virgule dans votre constructeur pour le paramètre, ce code de test a bien fonctionné pour moi: http://www.pastie.org/873263 –
@Goose, La question concerne l'utilisation de ce code de Python, pas de C++. –
@Barry mhm. Ce fut juste un exemple rapidement inventé. – Fabzter