Question:
My small program (see below) below compiles and runs correctly on one machine and generates the following error on another:
'operator <<' is ambiguous
Both computers are running Windows NT 4 Service Pack 4, Microsoft Visual Studio C++ v.6.
Could you please tell me where the source of this problem could be?
Tools | Options | Directories Tab and
Tools | Options | Help System Tab of MS Visual C++ Studio have the same settings on both computers.
*/#include#include #include using namespace std;class Event{ friend ostream &operator<<(ostream &, const Event & );public: Event(int , int , int); bool operator<(const Event & ) const;private: int eT; int pT; int type;};Event::Event(int e, int p, int t){ eT=e; pT=p; type=t;}bool Event::operator<(const Event &e) const { if(eT pq; pq.push(e1); pq.push(e2); while(!pq.empty()) { cout< error C2248: 'eT' : cannot access private member declared in class'Event'see declaration of 'eT'error C2248: 'pT' : cannot access private member declared in class'Event'
Answer:
Your code is fine. The first release of VC++ 6 had several bugs with handling friend functions. These bugs were fixed in the VC++ Service Packs that came later. I recommend that you install the latest VC++ 6 Service Pack on the machine where the compilation errors occur. This should solve the problem.