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

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -