BUG: Wrong Namespace Member Selected for Qualified ID

ID: Q167321


The information in this article applies to:


SYMPTOMS

The wrong member function is called if you:

See the MORE INFORMATION section for a sample that demonstrates the problem and the workaround.


RESOLUTION

Do not create a temporary object. Instead create a local object, and then call the member functions through the local object.


STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.


MORE INFORMATION

The following sample demonstrates the problem and the workaround.

Sample Code


/*
Compile Options: /GX
*/ 
# include <iostream>
using namespace std ;

struct CMyClass
{
   virtual void DoSomething()
   {
      cout << "::CMyClass::DoSomething()\n";
   }
};

namespace MyNameSpace
{
   struct CMyClass
   {
      virtual void DoSomething()
      {
         cout << "MyNameSpace::CMyClass::DoSomething()\n";
      }
   };
}

int main()
{
   MyNameSpace::CMyClass().DoSomething() ;
   // Workaround: Comment the line above,
   // Uncomment the following lines
   // MyNameSpace::CMyClass C1 ;
   // C1.DoSomething();
   return 0;
} 

Additional query words: namespace


Keywords          : kbcode kbCompiler kbCPPonly kbLangCPP kbVC kbVC500bug kbVC600bug 
Version           : winnt:5.0,6.0
Platform          : winnt 
Issue type        : kbbug 

Last Reviewed: May 17, 1999