c++ - Overloaded ostream operator in template -
c++ - Overloaded ostream operator in template -
i got confused in overloading ostream operator<< template class. (unnecessary code deleted)
sparsearray2d.h:
#include <iostream> using namespace std; template <typename t> class sparsearray2d { private: //... public: //... friend ostream& operator << (ostream&, const sparsearray2d<t>&); //... } template <typename t> ostream& operator << (ostream& os, const sparsearray2d<t> &_matrix) { //... os<<"overloaded operator works"; homecoming os; };
and main:
#include "sparsearray2d.h" int _tmain(int argc, _tchar* argv[]) { //... sparsearray2d<int> *matrx = new sparsearray2d<int>(10, 9, 5); cout << matrx; //... }
no errors , no warnings in vs2012, in console have 8 symbols link or pointer @ object. "0044fa80".
what's going wrong?
that's because you're overloading (not reloading) on sparsearray2d<t>
, not matrx
is:
sparsearray2d<int> *matrx = new sparsearray2d<int>(10, 9, 5); // ^^ cout << matrx;
matrx
pointer. such, you're streaming pointer - default logs address... apparently 0x0044fa80.
what want is:
cout << *matrx;
c++ templates std
Comments
Post a Comment