FIX: Private Copy Constructor Called Without Proper AccessLast reviewed: September 18, 1997Article ID: Q115521 |
The information in this article applies to:
SYMPTOMSAfter declaring the only copy constructor in a class with an access of "private", the constructor is called when access should not be allowed. For example, when an instance of the class is passed as a parameter to a function, the copy constructor is used to initialize the parameter; this should be allowed only if the function has "private" access.
STATUSMicrosoft 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++ version 5.0.
MORE INFORMATIONThe following sample code demonstrates this problem.
Sample Code
/* Compile options needed: none
*/
#include <iostream.h>
class aClass
{
private:
int i;
aClass(const aClass& x) { cout << "private copy constructor" <<
endl; };
public:
aClass(int j) : i(j) {};
};
int func(aClass x) { return 0; };
int main(void)
{
int n;
aClass a(1);
n = func(a); //Copy constructor gets called anyway.
return 0;
}
|
Additional query words: 8.00 8.00c 9.00
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |