If I put on first two lines:Code:#include <iostream.h> //using namespace std; class SimpleClass { public: SimpleClass(); SimpleClass(SimpleClass &); ~SimpleClass(); friend ostream & operator<<(ostream &,SimpleClass&); int GetData(); void SetData(int); void testfunction(SimpleClass); private: int itsData; }; SimpleClass::SimpleClass():itsData(0){cout<<"Default constructor called!"<<endl;} SimpleClass::SimpleClass(SimpleClass &rhs){cout<<"Copy constructor called!"<<endl;} SimpleClass::~SimpleClass(){cout<<"Destructor called!"<<endl;} int SimpleClass::GetData(){return itsData;} ostream& operator<<(ostream &o, SimpleClass &rhs) { o<<rhs.GetData(); return o; } void SimpleClass::testfunction(SimpleClass obj) { //why at this place default constructor is not called obj.SetData(2); }//Destructor is called when obj goes out of scope void SimpleClass::SetData(int i) { itsData=i; } int main() { SimpleClass obj; //this will cause message "Default constructor called" cout<<obj<<endl; obj.testfunction(obj); return 0; }
#include <iostream>
using namespace std;
I get following compiler error:
c:\program files\microsoft visual studio\myprojects\konstruktor\konstruktor.cpp(45) : error C2593: 'operator <<' is ambiguous
Error executing cl.exe.
but if I put
#include <iostream.h> it works fine
why is this happening and how to fix it



LinkBack URL
About LinkBacks


