Si ero a conoscenza di typeid , speravo ci fosse un altro metodo, per ora userò questo.
Venendo alla prima implementazione l'ho dovuta scrivere necessariamente nella forma seguente (perchè senza il <T> di cui discutevamo prima il compilatore dava errori in questo caso):
codice:template <typename T> friend ostream & operator<<( ostream &output, const myClass<T> &right ) { // Altro return output; }
Il problema adesso si verifica quando ad esempio nel client dichiaro più di un oggetto di tipo myClass. In particolare mi da il seguente messaggio di errore:
error C2995: 'std:stream &operator <<(std:
stream &,const myClass<T> & )': modello di funzione già definito
Perchè? E come risolvere il problema?
Mentre senza il:
Sopra la dichiarazione della funzione questo problema non sussiste, tuttavia il compilatore si comporta in modo strano, ovvero (trattandosi di VS 2010) mi segna come errore (sottolineatura rossa e passandoci sopra con il cursore indica chiaramente qual'è il tipo di errore), ad esempio il fatto di aver dichiarato all'interno della funzione un oggetto di tipo T, o di voler accedere ad una variabile privata dello stesso oggetto, ma mi fa compilare lo stesso con 0 errori e 0 warningcodice:template <typename T>![]()