[C++] Metodo con argomento Puntatore a metodo di classe?

di il
2 risposte

[C++] Metodo con argomento Puntatore a metodo di classe?

Salve a tutti.
Vorrei realizzare un metodo pubblico per la mia classe che , a seconda del parametro in input (un puntatore a metodo di classe, è possibile?) richiami proprio quello dell'argomento.
Esempio:


#include <iostream>
#include <cstdlib>
#include "header.h"
int main ()
{
	MiaClasse oggetto;
	...
	...
	...
	/*con merge, quick e bubble definiti sempre all' interno di MiaClasse; Ascending e Descending sono al momento funzioni esterne alla classe 
	,come se fossero comuni funzioni dichiarate e definite in C.*/
	
	
	oggetto.sort (mergeSort(Ascending));
	oggetto.sort(quickSort(Descending));
	oggetto.sort(bubbleSort(Ascending));
	
	
	system("PAUSE");
	return 0;
}

/* stralci di definizione di sort (   ) */

void MiaClasse::sort( //puntatore a metodo()...si scrive allo stesso modo di un puntatore di funzione?)
{
....
....
...
	this->puntatore a metodo( ...);
}

2 Risposte

  • Re: [C++] Metodo con argomento Puntatore a metodo di classe?

    C'è una ragione particolare per complicarti la vita in questo modo?
    Comunque ecco un mini esempio:
    
    void h(int i ) {
    	cout << i << endl;
    }
    
    class Miaclasse {
    	public:
    		void merge(void (*ptrfun)(int)) {
    			for (int i = 0; i < 10; i++)
    				ptrfun(i+100);
    		}
    
    		void sort(void (Miaclasse::*place)(void(*ptrfun)(int)), void(*ptrfun)(int)) {
    			(this->*place)(ptrfun);
    		
    		}
    };
    
    int main(int argc, char* argv[]) {
    	Miaclasse mc;
    	mc.sort(&Miaclasse::merge,h);
    }
    
  • Re: [C++] Metodo con argomento Puntatore a metodo di classe?

    In realtà vorrei creare una funzione di stampa per gli alberi binari, passando come parametro la visita più opportuna a seconda dei casi...allora mi è venuto in mente una soluzione come questa, ma è abbastanza macchinosa. Ti ringrazio per avermela mostrata. Per quanto riguarda gli algoritmi di ordinamento , la funzione che ne determina l'ordine ho deciso di lasciarla al di fuori della classe, in questo caso la realizzazione è stata molto più semplice. Opterò per un'altra via,anche se a dir la verità non è poi così importante quanto il resto Shodan ti ringrazio
Devi accedere o registrarti per scrivere nel forum
2 risposte