Invocazione di un metodo virtuale in un metodo statico.

di il
2 risposte

Invocazione di un metodo virtuale in un metodo statico.

Salve, il mio professore mi ha chiesto di scrivere un programma che gestisca figure geometriche. In particolare mi è stato chiesto di definire una classe con dentro due metodi statici:

	class opFigure
	{
	public:
		static double calcolaArea(Figura* f) {
			return f->area();
		}

		static double calcolaPerimetro(Figura* f) {

			return f->perimetro();
		}
	};
Ma il metodo area() e il metodo perimetro() sono stati definiti dentro la classe Figura come astratti. Quindi come possono essere invocati dentro metodi statici, visto che in un metodo statico possono essere invocati solo altri metodi statici.

2 Risposte

  • Re: Invocazione di un metodo virtuale in un metodo statico.

    Puoi chiamare metodi non statici da metodi statici, basta farlo su una specifica istanza della classe o tramite un puntatore ad essa. Nel tuo caso viene passato al metodo statico un puntatore a un oggetto di tipo Figura da cui chiamare i metodi non statici, quindi non c'è problema.
    Soltanto devi definire i metodi area() e perimetro() in apposite sottoclassi di Figura.
  • Re: Invocazione di un metodo virtuale in un metodo statico.

    Ah capito. Quindi se nella classe opFigure fossero stati presenti delle dichiarazioni di variabili non statiche, e delle definizioni di metodi non statici, i metodi statici calcolaArea() e calcolaPerimetro() non potevano ne accedere a quelle variabili ne invocare quei metodi.
    Comunque grazie Alexv.
Devi accedere o registrarti per scrivere nel forum
2 risposte