BUG: 'using' Declaration Doesn't Overload Base Class MembersLast reviewed: July 24, 1997Article ID: Q140604 |
The information in this article applies to:
SYMPTOMSAttempting to overload member functions located in a base class from a derived class with a 'using' declaration, may result in the following compiler error:
error C2664: 'function': cannot convert parameter 'number' from 'type1' to 'type2' CAUSEThis particular problem occurs if the member functions that are being overloaded are declared before the 'using' declaration in the class definition.
RESOLUTIONPlace the 'using' declaration above the declarations for the member functions you want to overload. See the comments in the following code sample:
Sample Code
#include "iostream.h" class A { public: int f(int) {cout << "In A::f(int)!!!\n";return 0;} }; class B : public A { public: int f(char*){cout << "In D::f(char*)!!!\n";return 0;} using A::f; // <<== move this above the int f(char*) // declaration to fix the problem. }; void main() { B d; d.A::f(1); d.f(1); // <<== C2664 happens here d.f("Hi There"); } STATUSMicrosoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
REFERENCESFor more information on the 'using' declaration, please drill down to the following topic in the Visual C++ Online Help:
\Visual C++ Books\C/C++\C++ Language\Reference\Declarations\ Namespaces\using Declaration |
Keywords : CLIss vcbuglist400 vcbuglist500
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |