ciao.
Ho creato una classe base CTrasform da cui ereditano ctrasform3d e ctrasform2d.
Ho un profilo (insieme di punti 3d , i punti 2d hanno coordinata z = 0)
Vorrei creare un function object virtuale nella classe CTrasform e implementarlo in ctrasform2d e ctrasform3d, in questo caso vorrei implementarle come function object in modo che per trasformare una poliline (un insieme di punti)
mi basti passare il ctrasform alla poliline che è un vector stl , e fare una cosa del genere:
void Poliline::Trasform(Ctrasform* pTrans){
vector<3dpoint> poliline;
transform(poliline.begin(),poliline.end(),pTrans)
}
in questo modo se passo alla funzione un ctrasform2d avro una trasformazione bidimensionale e se passo una ctrasform3d avro una trasformazione tridimensionale.
, è possibile fare cose di questo genere con i function object(funzione virtuale e due function object polimorfici)
quello che nonriesco a capire è:
posso passare un istanza di function object che contiene il classico operatore() o devo passare sempre e solo un tipo?
grazie.
è un esercizio per adesso , sto passando di nuovo tutto il libro per vedere se ho capito veramente e chiedo i dubbi basilari, ciao.