Newsgroup: it.comp.lang.c++
Titolo: Che classe sei????

Grazie a GetClassName(hWnd, LPSTR,int) ottengo una stringa col nome
della classe; devo passare l'hWnd della mia istanza. E se la mia istanza
č istanza di una classe NON FINESTRA?
COME FACCIO? Non avendo un hWnd, ovviamente questa non č la mia
funzione.
Cosa posso fare? Nell'Api Bible non c'č menzione di una similare
GetClassName che non sia dedicata a classi finestra. Esistono anche
classi non finestra, mannaggia.
Un caffč corretto a chi mi da una soluzione. Grazie.

 è istanza di una classe NON FINESTRA?
Ma cos'e` che vuoi fare? GetClassName ti restituisce il nome della
*window class*, quindi non ha senso chiedere tale nome per qualcosa
che non sia una window. Forse confondi in qualche modo le window
classes con le classi C++ ?
Saluti
Paolo

Paolo Aiello wrote:

(ho citato GetClassName per classi finestra solo come esempio
chiarificatore, che ha  invece generato confusione, in pratica vorrei
fare una GetClassName "custom").
Mi spiego meglio. Come si puo' ottenere,  il nome della classe di un'
istanza(possibilmente dinamica)
 per mandarla in output in real time?
CClasse1 * oggetto1 = new CClasse1;
CClasse1 oggetto1 ;///etc......
// lo scope per il momento non importa,
//diciamo che oggetto1 sara' visibile dal chiamante.
//in un altro punto, vorrei mandare in output, a beneficio dell'utente,
//il nome della classe a cui appartiene.
char* GetNomeClasse(???  oggetto1)//
                     {
                        /*qui il codice magico
                       * /..............................
                      }
//la chiamata sarebbe
cout<<GetNomeClasse(oggetto1);
So che a molti potra' apparire domanda idiota, ma magari mettendo pezzo
di idiozia su pezzo di idiozia, si arriva allo scopo.
Grazie anticipatamente.

 fare una GetClassName "custom").
[omissis]
Come gia` ti avevo risposto, sostanzialmente le uniche possibilita` sono
sicuramente:
1) Ciascuna classe possiede una funzione membro che ne restituisce il nome
forse:
2) Utilizzare il Run Time Type Information (se e quando possibile e se
non e` possibile la 1)
La prima soluzione la puoi sostanzialmente adoperare sempre e non e`
complicata. Se sei tu a scrivere le classi semplicemente aggiungi un
ulteriore metodo; se le classi sono gia` pronte, puoi pensare di
estenderle aggiungendovi tale metodo.
L'uso dell'RTTI e` un'altra possibilita` che pero` ritengo sia tutta da
discutere e verificare (non ho mai utilizzato l'RTTI, potrebbe fare al
caso tuo, ma sarebbe da vedere se e come).
Paolo
--
------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
 
http://www.cli.di.unipi.it/~marotta
------------------------------------------

 non e` possibile la 1)
[Mai provato]
Con typeid si ottiene un oggetto di tipo type_info (o sottoclasse),
che ha un metodo name, quindi dovrebbe bastare:
  const char *  getClassName( const Object & obj )
  {
    return typeid(obj).name();
  }
Pero' Stroustrup dice anche:
  The character representation of a class' name is implementation-defined.
Quindi il risultato non e' garantito, anche se non vedo perche' una
implementazione dovrebbe chiamare una classe con qualcosa di diverso
dal suo nome.
	Mauro

 dal suo nome.
Ad esempio, con il DJGPP per una classe chiamata C restituisce il nome
1C (il numero uno e la lettera c).
EMG

dal suo nome.
Infatti avevo scritto "se e quando possibile"...
In verita` avevo pensato anche a qualcosa di piu` "mostruoso" e meno
diretto e efficiente. Cmq non intendevo tanto proporre questa strada, solo
far notare che esisteva una ulteriore possibilita`.
Paolo
------------------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  G: Per concludere, possiamo chiedervi di commentare
     l'attuale panorama informatico?
  I: /* l'attuale panorama informatico */
------------------------------------------------------------------

 ------------------------------------------

         Mauro

 
RTTI sta per Run Time Type Information ed e` uno strumento per reperire
a run time informazioni sul tipo di un certo valore.
Paolo
-- 
------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
 
http://www.cli.di.unipi.it/~marotta
  G: Potreste commentare l'attuale
