BUG: C2059 When Memory Model Used with Conversion Function

ID: Q103789

7.00 | 1.00 1.50 MS-DOS | WINDOWS kbtool kbbuglist

The information in this article applies to:

SYMPTOMS

The Microsoft C/C++ Compiler versions 7.0, 8.0, and 8.0c incorrectly generates errors when a memory model specifier is used in the return type of a user-defined conversion function. For example, the compiler generates the following errors with the sample code provided below:

   file.cpp(8) : error C2059: syntax error : '*'
   file.cpp(8) : error C2238: unexpected token[s] preceding ';'

RESOLUTION

Create a typedef for the conversion type and use the typedef in the conversion function definition. For example:

   typedef const char __far* NEWTYPE;

   operator NEWTYPE () const;

STATUS

Microsoft has confirmed this to be a bug in the products listed above. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

MORE INFORMATION

Sample Code

//  Compile options needed: /c

class ClassName {

public:

     operator const char __far* () const;
};

Additional reference words: 1.00 1.50 7.00 8.00 8.00c KBCategory: kbtool kbbuglist KBSubcategory: CPPIss Keywords : kb16bitonly

Last Reviewed: July 23, 1997