[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