[Tech] Rompicapo per programmatori C++

David david.mugnai@spacespa.it
Lun 15 Apr 2002 11:15:27 CEST


On Sat, 13 Apr 2002 15:15:02 +0200
"Stefano" <stefano@gse-empoli.it> wrote:

> Sto facendo un programma in C++ ed ho un problema che non riesco
> a risolvere.
> Devo definire un puntatore al costruttore di una classe ma non
> so come fare:
> Prendiamo il seg. esempio:
[snip]
cosi' come lo hai pensato non funge:
1 perche' <puntatore costruttore> e' il puntatore a una funzione di una certa classe
	e non lo puoi usare con un altra, quindi dovresti avere:
	<puntatore costruttore C1>,<puntatore costruttore C2>, <puntatore costruttore C3>
2 il costruttore di una classe e' una funzione particolare che viene richiamata automaticamente
	e che *non* ha tipo di ritorno, quindi non credo proprio che tu possa chiamarlo direttamente.

Potresti provare ad utilizzare l'ereditarieta'.

class Cbase {
	//metodi e membri comuni, se ce ne sono
}
class C1: public Cbase {
	//bla bla
}
class C2: public Cbase {
	//bla bla
}
class C3: public Cbase {
	//bla bla
}
Cbase* funz(int classe) {
	Cbase* pCostruttore=0;
	if (classe = 1)
         	pCostruttore = new C1();
	else if (classe = 2)
		pCostruttore = new C2();
	else
		pCostruttore = new C3();
	return pCostruttore;
}

in questo modo il puntatore che ti ritorna funz(int classe) e', a seconda di classe,
un puntatore ad un'istanza di tipo diverso.
Attenzione che con un puntatore a Cbase puoi chiamare solo i metodi/membri di Cbase (a meno di
fare un cast), quindi o le 3 classi hanno dei metodi/membri comnuni, o questo metodo
non ti serve a molto.


> Saluti
> Stefano

bye
-- 
David Mugnai
Life is a test, and I didn't take very good notes



Maggiori informazioni sulla lista flug-tech