Microsoft KB Archive/168373

= FIX: C2065 When Default Constructor of a Nested Class Called =

Article ID: 168373

Article Last Modified on 10/17/2003

-

APPLIES TO


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

-



This article was previously published under Q168373



SYMPTOMS
When the default constructor of a nested class gets called, it causes the C2065 compiler error:

'identifier' : undeclared identifier



RESOLUTION
Please see the MORE INFORMATION section for a workaround.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was corrected in Microsoft Visual C++ version 6.0.



MORE INFORMATION
NOTE: Because constructors do not have names, they are never found during name lookup; however an explicit type conversion using the functional notation causes a constructor to be called to initialize an object. (This information came from the C++ Working Paper.)

The following sample code demonstrates the problem and the workaround.

Sample Code
/*  Compile options: None */

class Base {  public:

class Common {      public: Common{}; };      class Derived : public Common {      public: Derived {} Derived(int n) {} };      Base( const Common &theCommon) {} };

int main(void) {      Base B1(Base::Derived);  //C2065 here

// Workaround: Comment the above line // Uncomment the following lines // Base::Derived D ; // Base B1(D) ; return 0; }

Keywords: kberrmsg kbbug kbfix kbvc600fix kbcode KB168373

-

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

© Microsoft Corporation. All rights reserved.