Microsoft KB Archive/167321

= FIX: Wrong Namespace Member Selected for Qualified ID =

Article ID: 167321

Article Last Modified on 12/10/2003

-

APPLIES TO


 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 6.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition
 * Microsoft Visual C++ 6.0 Professional Edition
 * Microsoft Visual C++ 6.0 Standard Edition

-



This article was previously published under Q167321



SYMPTOMS
The wrong member function is called if you:
 * define a class with the same name, in different scopes;
 * create a temporary object, as shown in the sample, of that class type;
 * call a member function of that class.

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.

This problem was corrected in Microsoft Visual C++ .NET.



MORE INFORMATION
The following sample demonstrates the problem and the workaround.

Sample Code
/* Compile Options: /GX using namespace std ;
 * 1) include
 * 1) include

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: kbbug kbfix kbnoupdate kblangcpp kbcpponly kbcode kbcompiler KB167321

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.