CIao.
Sto cercando di ordinare un vector in modi diversi , per questo uso la funzione stl sort e passo il comparer:
codice:
inline int cmpCompare ( CEntity* pEnt1, CEntity* pEnt2)
{
	double xEnt1 = (*pEnt1).GetCoord(0);
	double yEnt1 = (*pEnt1).GetCoord(1);
	double zEnt1 = (*pEnt1).GetCoord(2);

	double xEnt2 = (*pEnt2).GetCoord(0);
	double yEnt2 = (*pEnt2).GetCoord(1);
	double zEnt2 =	(*pEnt2).GetCoord(2);

	if( xEnt1 == xEnt2 && yEnt1 == yEnt2 && zEnt1 < zEnt2) 
		return 1;
	
	if( xEnt1 == xEnt2 && yEnt1 < yEnt2) 
		return 1;
	
	if( xEnt1 < xEnt2 ) 
		return 1;
	
	return 0;
}
a seconda del tipo di CEntity che puo' essere A,B o C devo per A e B fare il cast del centity
ad A o B e richiamare la funzione A->getCentroid o B-GetCentroid che ritorna un double, altrimenti se è C devo chiamare una altra funzione , GetCoord().

pensavo di passare un parametro al comparer con il tipo secondo cui devo caricare questi dati:l'indice è la componenete del punto 3d(x,y o z)
double xEnt1 = (*pEnt1).GetCoord(0);
double yEnt1 = (*pEnt1).GetCoord(1);
double zEnt1 = (*pEnt1).GetCoord(2);

double xEnt2 = (*pEnt2).GetCoord(0);
double yEnt2 = (*pEnt2).GetCoord(1);
double zEnt2 = (*pEnt2).GetCoord(2);

chiamando 3 funzioni diverse di caricamento dati :
se A:
double xEnt1 = (*A).GetCentroid(0);
double yEnt1 = (*A).GetCentroid(1);
.
.
.
se B:
double xEnt1 = (*B).GetCentroid(0);
double yEnt1 = (*B).GetCentroid(1);
.
.
.
se C:
double xEnt1 = C.GetCoord(0);
double yEnt1 = C.GetCoord(1);
.
.
.
ecc...
pensavo se non si puo' passare un parametro al comparer di templatizzare la classe e specializzarla per i 3 casi , voi come fareste?
grazie.