Microsoft KB Archive/115708

= FIX: C++ Compiler Treats &array[][] as 2-D Array of References =

Article ID: 115708

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft C/C++ Professional Development System 7.0
 * Microsoft Visual C++ 1.0 Professional Edition
 * Microsoft Visual C++ 1.5 Professional Edition

-



This article was previously published under Q115708



SYMPTOMS
Attempting to call a class constructor using a reference to a two dimensional array of objects will cause the compiler to incorrectly treat the array as a two dimensional array of references. In the sample below, the following errors will be incorrectly generated:

test.cpp(6) : error C2234: arrays of references are illegal

test.cpp(6) : error C2511: '__ctor' : overloaded member function not found in 'X'



CAUSE
The compiler is interpreting int (&iref)[10][10]; as if it was written: int & iref[10][10]; It is not legal in C++ to use a pointer to a reference, so an array of references is also not legal.



STATUS
Microsoft has confirmed this to be a bug in the C/C++ compiler for MS-DOS, versions 7.0, 8.0, and 8.0c and the 32-bit C/C++ compiler, version 8.0. This problem was corrected in compiler version 9.0, included with Visual C++ version 2.0.



MORE INFORMATION
The following code can be used to demonstrate this problem.

Sample Code
/* Compile options needed: /c

class X { int m_arr[10][10]; public: X {} X( int (&iref)[10][10] ) {} };

void main { }

Additional query words: 7.00 8.00 8.00c 1.00 1.50

Keywords: kbbug kbfix kbcpponly kbcompiler KB115708

-

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

© Microsoft Corporation. All rights reserved.