PDA

Visualizza la versione completa : [C++] Problema ridefinizione operatore << ostream in classe


L'Aquila
10-02-2011, 19:25
Ciao a tutti,
cerco di essere breve.
Ho una classe Node di tipo template di cui voglio ridefinire l'operatore << per poter utilizzare



Node<int>* nodx;
nodx.value = 20;
cout<<nodx<<endl;


Nel file Node.h ho scritto:



#include <iostream>

using namespace std;
template <typename T>
class Node
{
/* Overload operatori di streaming */
friend ostream & operator<<(ostream &out, const Node &node) {
return out<<node.value;
}
}


ma ci non funziona: in output ho una stringa tipo 0x8d2500.
Cosa c' di sbagliato?

shodan
10-02-2011, 19:31
Cosa c' di sbagliato?



Node<int>* nodx;
nodx.value = 20;
cout<<nodx<<endl;

nodx un puntatore a un oggetto, non un oggetto. E gli operatori voglio oggetti, non puntatori a oggetti (presumo che nodx.value = 20 sia un errore di battitura dell'esempio).

Questo corretto.


Node<int>* nodx;
nodx->value = 20;
cout<< (*nodx) <<endl;


Poi devi ritornare lo ostream.


template <typename T>
class Node
{
/* Overload operatori di streaming */
friend ostream & operator<<(ostream &out, const Node &node) {
out<<node.value;
return out;
}
}

L'Aquila
10-02-2011, 19:40
Grazie shodan, i tuoi consigli mi hanno illuminato la mente!
:yuppi:

shodan
10-02-2011, 19:52
Prego :ciauz:

Loading