BUG: Wrong Namespace Member Selected for Qualified IDID: Q167321
|
The wrong member function is called if you:
Do not create a temporary object. Instead create a local object, and then call the member functions through the local object.
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.
The following sample demonstrates the problem and the workaround.
/*
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