FIX: C1001 When Calling Base Class Conversion Operator

ID: Q141457


The information in this article applies to:
  • The C/C++ Compiler (CL.EXE), included with:
    • Microsoft Visual C++ 32-bit Edition, version 4.0


SYMPTOMS

Compiling a C++ file that contains an explicit call to a base class conversion operator, with the /FR compiler option (create Browser information) may result in the following fatal compiler error:

C:\Test\Test.Cpp(22) : fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'msc1.cpp', line 899)


RESOLUTION

There are two possible workarounds:

  • Turn off "Generate browse info" or remove /FR compiler option.


  • -or-

  • Provide an implicit call to the base class conversion operator as demonstrated by the following sample code.


Sample Code


/* Compile options needed: /FR
*/ 

class   Base
{
public:
    operator int()
    {
        return 0;
    }
};

class   Derived : public Base
{
    int fun()
    {
        return  Base::operator int();

// The following line is a workaround for the
// previous line that fails.

   //  return  int(*((Base*)this));
    }
}; 


STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This bug was corrected in Visual C++ 4.1.

Additional query words: kbVC400bug 4.00 10.0 4.10 10.10 ICE

Keywords : kbcode kbCompiler kbCPPonly kbVC kbVC410fix
Version : winnt:
Platform : winnt
Issue type :


Last Reviewed: January 25, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.