me gustaría exponer código C++ con una¿por qué necesito operadores de comparación en la suite de indexación de vector de boost python?
std::vector<A>
al pitón. Mi
class A{};
no tiene un operador de comparación implementado. Cuando intento
BOOST_PYTHON_MODULE(libmyvec)
{
using namespace boost::python;
class_<A>("A");
class_<std::vector<A> >("Avec")
.def(boost::python::vector_indexing_suite<std::vector<A> >());
}
Aparece un error acerca de los operadores de comparación. Si cambio la definición de A a
class A {
public:
bool operator==(const A& other) {return false;}
bool operator!=(const A& other) {return true;}
};
Funciona como un amuleto.
¿Por qué tengo que implementar estos operadores de comparación? ¿Hay alguna forma de usar el vector_indexing_suite
sin ellos?
Gracias por su respuesta! ¿Este código solo está disponible en el sandbox boost? ¿Cuál es la forma más fácil de usarlo? ¿Debo descargar y compilar impulso manualmente después de intercambiar los archivos en [sandbox] (https://svn.boost.org/svn/boost/sandbox/python_indexing_v2/)? – Hans
Aparentemente, esta característica aún no está incluida en la versión de lanzamiento de Boost.Python, por lo tanto, si desea usarla, deberá descargar la versión más reciente del entorno limitado y volver a generarla. Sin embargo, no sé cuál es el estado de esta versión (aún no se ha revisado), por lo que es probable que su mejor opción sea seguir con la implementación ficticia de los operadores de comparación. –