FIX: C2243 on Friend Overload oLast reviewed: September 19, 1997Article ID: Q148688 |
The information in this article applies to:
SYMPTOMSThe following error is generated:
error C2243: 'abstract declarator' : conversion from 'class Derived *' to 'const class Base<Type> &' exists, but is inaccessiblein code that contains all of the following:
RESOLUTIONUse one of the following two workarounds to resolve the problem:
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 INFORMATION
Sample Code
/* Compile options needed: None */ #include <iostream.h> template<class T> class Base; template<class T> ostream& operator<<(ostream& s, const Base<T> & a) { return s; } template<class T> class Base { public: friend ostream& operator<<(ostream& s, const Base<T>& a); }; class Derived; ostream& operator<<(ostream& s, const Derived& a) { return s; } // Replace 'private' by 'public' in the following line // to avoid the error (work around # 2) class Derived : private Base<char> { public: friend ostream& operator<<(ostream& s, const Derived& a); }; void main(void) { Derived objDerived; // The C2243 error is generated for the following line. // Uncomment the typecast to avoid the error (work around # 1) cout << /*(const Derived&)*/ objDerived; } Keywords : CPPIss CPPLngIss vcbuglist400 vcfixlist500 kbprg Version : 4.0 4.1 4.2 Platform : NT WINDOWS Issue type : kbbug Solution Type : kbfix |
================================================================================
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |