Originariamente inviato da shodan

Una cosa del genere insomma (consideralo pseudo codice anche se non lo è)
codice:
void check_nodes(const Node& nd) {
	if (nd.hasChildNodes()) {
		NodeList ndlist = nd.getChildNodes();
		for (long sz=0; sz<ndlist.getLength(); ++sz) {
			Node znd = ndlist.getItem(sz);
			wcout << znd.getNodeType()<< endl;
			check_nodes(znd);
		}
	}
}
Ho un problema,si puo' trasformare questa funzione ricorsiva in una funzione non ricorsiva?
Perchè ho una classe Cimporter e una classe CColladaReader.
La classe Cimporter è una classe generica di importzione , che non dipende dalla classe ccolladareader , l'ho resa generica per poterla utilizzare su vari tipi di importazione , ad es .3ds(3dstudio) o x.

Nlla classe Cimporter tutto ha una logica del tipo:

codice:
void CImporter::ImportVertex()
{
	//chiamo la funzione di reset dei vertici
	m_pApi->VertexReset();
	float x,y,z;
	//finchè il reader mi restituisce true ho un vertice da importare
	//esco quando non ci sono piu' vertici
	
	for(int index = 0;m_pApi->NextVertex();index++)
	{	
		if(m_pApi->ImportVertex(&x,&y,&z))
		{
			
			Vertex* v = new Vertex();
			v->_x = x;
			v->_y = y;
			v->_z = z;
			v->_nx = 0.;
			v->_ny = 0.;
			v->_nz = 0.;
			m_CurrMeshVertexes.push_back(v);			
		}
	}
}
dove m_pApi è una classe specifica dell'importatore incapsulata che ad es puo' essere Ccolladareader o C3dsreader ed è la classe che fa il lavoro di importazione grezzo dipendente dal tipo di file.Inizializzandp semplicemente la classe m_pApi ad una classe C3dsreader o Ccolladareader cambio il tipo di importazione mentre Cimporter rimane la stessa.

Ora:
Nei file 3d bisogna in genere ciclare lo scene graph che descrive l'oggetto e andare ad importare la geometria,il materiale e la posizione per ogni nodo di questo.

Vorrei utilizzare una struttura del tipo:
codice:
m_pApi->VertexReset();
for(int index = 0;m_pApi->NextVertex();index++)
{	
	if(m_pApi->ImportVertex(&x,&y,&z))
	{
        }
}
ma per ciclare i nodi nello scene graph ho una funzione ricorsiva , che non so controlare dalla logica di importazione(Cimporter) , è per questo che chiedo se è possibile rendere la funzione ricorsiva una fuunzione normale.
Grazie.

Grazie.