10
votes

Comment exporter std :: vecteur

J'écris une application wiht boost.python bibliothèque. Je veux passer la fonction en python qui retourne std :: vecteur . J'ai un peu de problèmes: xxx

lorsque j'appelle cette fonction de Python, je reçois: xxx

Quoi que j'ai manqué?


0 commentaires

3 Réponses :


12
votes

Vous devez écrire un convertisseur comme celui-ci:

BOOST_PYTHON_MODULE(MyModule)
{
    boost::python::to_python_converter<std::vector<std::string, std::allocator<std::string> >, VecToList<std::string> >();
    boost::python::def("getListValue", getListValue);
}


1 commentaires

BTW, pourquoi avez-vous écrit classe avant std :: allocator ?



3
votes

C'est une question peu ancienne, mais j'ai constaté que si vous avez explicitement besoin de retourner par valeur, comme: xxx

plutôt que xxx < / Pré>

Python fait la conversion pour vous (j'utilise Python 2.7 au moment de la rédaction de cette réponse) et il n'est pas nécessaire de déclarer / définir le convertisseur.

@tryskele


0 commentaires

1
votes

J'utilise les fonctions d'utilité suivantes pour convertir / en conteneurs STL. La fonction de somme triviale illustre comment elles sont utilisées. J'espère que vous pouvez l'utiliser. XXX


1 commentaires

C'est ce dont j'avais besoin. Certains comme moi pourraient avoir besoin de se mettre -std = c ++ 11 Stackoverflow.com/Questtions/23261320/...