PDA

View Full Version : [C++][OVERLOADING OPERATORE <<]


moka
03-02-2010, 16:14
ragazzi vi chiedo aiuto è tutto il giorno che sto impallato a sto problema stupido :|

come da titolo, devo eseguire l'overloading dell'operatore <<

bene, ho una classe matrix.h e nel mezzo ci inserisco

std::ostream& operator<< (std::ostream& s, const matrixT& p){

for(unsigned int i=0, i<(p.colonne), i++){
for(unsigned int j=0; i<(p.righe), j++){
s << p.**matrice << endl;
return s;
}}}



mentre nel main.cpp ci metto

#include "matrixT.h"
#include <iostream>
#include <ostream>

using namespace std;

int main()
{
cout << "Prova costruttore di default\n";
matrixT<int> A(3, 5);
cout<<"bello";

cout << A;

return 0;
}

ora, tralasciando il fatto che è inutile che posto il resto del codice dentro matrix, perchè compila e funziona, l'unica cosa che non funziona è quella richiamata dal main "cout << A;"
in pratica matrix è una matrice e con l'overloading di << dovrei stamparla per intero, ma mi da in compilazione il seguente errore:

$ g++ main.cpp;
main.cpp: In function 'int main()':
main.cpp:13: error: no match for 'operator<<' in 'std::cout << A'
c:\programmi\mingw-g++4.3.0\bin\../lib/gcc/mingw32/4.3.0/include/c++/ostream:112: note: candidates are: std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>& (*)(std::basic_ost


vi prego aiutatemi, ho provato a cambiare la funzione duecente miliardi di volte in qualsiasi modo, mi affido a voi!

cionci
04-02-2010, 08:53
L'overloading dove lo inserisci ? E' membro della classe ?

moka
04-02-2010, 10:47
L'overloading dove lo inserisci ? E' membro della classe ?

sì esatto

cionci
04-02-2010, 10:56
sì esatto
Non puoi fare l'overloading dell'operatore << con una funzione membro, perché la funzione membro sottointende che this sia il primo parametro dell'operatore. In questo caso invece è il secondo parametro. Quindi devi fare una funzione esterna alla classe e dichiararla friend all'interno della classe se vuoi utilizzare la sua struttura interna.