BUG: Class Access Specifier Ignored for Fully Qualified Static Members (263639)



The information in this article applies to:

  • Microsoft Visual C++, 32-bit Enterprise Edition 6.0
  • Microsoft Visual C++, 32-bit Professional Edition 6.0
  • Microsoft Visual C++, 32-bit Learning Edition 6.0

This article was previously published under Q263639

SYMPTOMS

The compiler incorrectly allows access to private or protected static members and enums when you use fully qualified names to refer to them.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Steps to Reproduce Behavior

The following sample programs demonstrate the bug:
//test1.cpp
// compiler option needed: none
class X {
private:
  static int s_i;
  enum {e};
  static void f() {}
};
int X::s_i = 0;

int main() 
{
  int i  = ::X::s_i; //no error here
  i = ::X::e;        //no error here
  ::X::f();          //no error here
  
  return 0;
}

				
//test2.cpp
// compiler option needed: none
namespace N 
{
  class X 
  {
  private:
    static int s_i;
    enum {e};
    static void f() {}
  };
}
int N::X::s_i = 0;

int main() 
{
  int i  = N::X::s_i; //no error here
  i = N::X::e;        //no error here
  N::X::f();          //no error here

  return 0;
}
				

Modification Type:MinorLast Reviewed:7/5/2005
Keywords:kbBug kbCompiler kbCPPonly KB263639