Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Donovant
    Registrato dal
    Sep 2005
    residenza
    London
    Messaggi
    1,329

    [C++] Problema con typeid(*this).name();

    Ho un problema nella scrittura di questa piccola classe:
    class Errore{
    public:
    virtual char* nome(){return typeid(*this).name();}


    };
    Mi dice sono che l'errore nella linea del typeid, ma non dice altro.Non riesco a capire;
    voglio che nome() dica quale "tipo" si sta riferendo al metodo nome() e quindi anche alla classe Errore.
    Esempio:
    //dopo aver incluso #include <tipeinfo>
    int *a;
    cout<<typeid(a).name()<<endl;
    //l'output di questo pezzetto qui sarà

    Pi
    Ovvero puntatore "P" ad un intero "i".
    Grazie!
    Beati gli smemorati, perchè avranno la meglio anche sui loro errori...

    My gallery: http://donovant.deviantart.com/gallery/

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    esempio:

    codice:
    #include <iostream>
    #include <typeinfo>
    
    using namespace std;
    
    class Errore {
    public:
    	virtual const char* nome() { 
    		return typeid(this).name();
    	};
    };
    
    int main() {
    	Errore e;
    	int* a = NULL;
    	cout << typeid(a).name() << endl;
    	cout << typeid(e).name() << endl;
    	cout << e.nome() << endl;
    	return 0;
    }
    Se volevi per forza dereferenziare il this

    codice:
    ...
    return typeid(*this).name();
    ...
    ho provato ma da errore a run-time dopo aver dato un warning a compile-time

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.