BUG: C2248: Statics in Friends, No Access to Protected MembersLast reviewed: May 21, 1997Article ID: Q167966 |
The information in this article applies to:
SYMPTOMSWhen you create a static object created in a friend function, it is denied access to protected members of a class and compiler error C2248 appears as follows:
'member' : cannot access protected member declared in class 'class' RESOLUTIONCreate the static object using the new operator.
STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available.
MORE INFORMATIONThe following sample demonstrates the problem and the workaround.
Sample Code
#include <iostream> //#define WORKAROUND //Uncomment this line for workaround class A { protected: A() { std::cout << "A()" << std::endl ;} ~A() { std::cout << "~A()" << std::endl ;}; friend A* GetA(); }; A* GetA() { #ifndef WORKAROUND static A a ; return &a ; #else static A *pA = new A; return pA; #endif } void main() { A *pA = GetA() ; } |
Keywords : CPPIss CPPLngIss kbcode kbtool vcbuglist500 kbbuglist
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |