Tengo una clase que quiero exponer una lista de estructuras (que solo contiene algunos enteros). no quiero el exterior de modificar estos datos, simplemente iterar sobre ella y les lee Ejemplo:Hacer iterable mi clase de C++ a través de BOOST_FOREACH
struct TestData
{
int x;
int y;
// other data as well
}
class IterableTest
{
public:
// expose TestData here
};
ahora en mi código Quiero usar mi clase como esta:
IterableTest test;
BOOST_FOREACH(const TestData& data, test.data())
{
// do something with data
}
Ya leí este artículo http://accu.org/index.php/journals/1527 sobre los espacios de miembros. Sin embargo, no quiero (ni puedo) guardar todos TestData en un vector interno o algo así. Esto se debe a que la clase en sí misma no posee el almacenamiento, es decir, no hay ningún contenedor subyacente al que la clase pueda acceder directamente. Sin embargo, la clase en sí misma puede consultar un componente externo para obtener el elemento siguiente, anterior o ith.
Así que, básicamente, quiero que mi clase se comporte como si tuviera una colección, pero de hecho no tiene una. Alguna idea?
¿no solo tiene que proporcionar funciones de inicio/final devolviendo iteradores adecuados? – jalf
sí, pero no tengo un contenedor subyacente que pueda proporcionarme estos iteradores – newgre
, así que escríbelos usted mismo. :) La biblioteca Boost.Iterator debería ponerlo en funcionamiento con bastante rapidez. – jalf