devxlogo

Ambiguous Operator Error

Ambiguous Operator Error

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.

See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist