FIX: Cannot Access Private Member from Friend Class

ID: Q115854


The information in this article applies to:
  • The C/C++ Compiler (CL.EXE), included with:
    • Microsoft Visual C++ for Windows, 16-bit edition, versions 1.0, 1.5
    • Microsoft Visual C++, 32-bit Editions, version 1.0


SYMPTOMS

When compiling the code below, the C/C++ compiler will incorrectly report the following error:

C2248: 'ptr' : cannot access private member declared in class 'X'


STATUS

Microsoft has confirmed this to be a bug in the products listed at the beginning of this article. This problem was corrected in Visual C++ version 2.0.


MORE INFORMATION

The following sample can be used to demonstrate this problem.

Sample Code


/* Compile options needed: none
*/ 

#include <iostream.h>
class C
{
   class X;
   class Y;

   class X
   {
      X* ptr;
      friend Y;
   };

   class Y
   {
      X* x;
    public:
      X* lookat() { return x->ptr; }           /* Error: C2248 */ 
   };
};
void main( void )
{
   cout << "PASSED" << endl;
} 

Additional query words: 1.00 1.50 7.00 8.00 8.00c

Keywords : kbCompiler kbCPPonly kbVC
Version : 7.00 | 1.00 1.50 | 1.00
Platform : MS-DOS NT WINDOWS
Issue type :


Last Reviewed: September 10, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.