compatibilidad con la entrada estándar $ std :: istream usando trago, C ++, y Ruby
Pregunta
Tengo una función en C ++ que toma en un std :: istream como la entrada:
class Foo {
Foo(std::istream &);
}
El uso de TRAGO, he obligado a Ruby, pero variable $ entrada estándar de Ruby es fundamentalmente diferente de cualquier cosa como las clases de flujo en C ++, así que no estoy seguro de cómo sea 1) exponer la clase C ++ a Ruby en una manera que puedo utilizar $ entrada estándar, o 2) convertir $ entrada estándar en algo la clase C ++ puede entender.
Alguien tiene experiencia con iostreams en C ++ unión a Ruby?
Gracias.
Solución
Puede utilizar una instancia de std :: istream que implementa sus operaciones con métodos de rubíes en $ stdin llamadas a través de la interfaz de C (por ejemplo, usando rb_funcall). Usted no puede hacerlo mediante la derivación de una clase de std :: sí istream, porque sus métodos no son virtuales; en lugar que necesita para derivar de std :: stream_buf y una instancia de un istream que utiliza el búfer de la secuencia.