Overloaded function in derived class (C++)
这是一个非常基本的问题,但是我的C++技能有点生疏…
我有一个基类,它有一个接受3个参数的成员函数,例如:
1 2 3 4 5 | class MyBaseClass { public: int func(int a, char b, int c); }; |
以及一个派生类,它用单参数版本重载该函数,例如:
1 2 3 4 5 | class MyDerivedClass : public MyBaseClass { public: int func(float a); }; |
号
当我试图从派生类的对象的基类调用函数时,如下所示:
1 2 | MyDerivedClass d; d.func(1, 'a', 0); |
编译器抱怨
我做错什么了?
1 2 3 4 5 6 | class MyDerivedClass : public MyBaseClass { public: using MyBaseClass::func; int func(float a); }; |
您可能打算将方法
但是,如果你真的想实现
when I try to call the function from the base class on an object of
the derived class, like this
号
那么,你可以试试
1 2 | MyDerivedClass d; d.MyDerivedClass::func( 3.14f ); |
号
这是编译和工作,但似乎不是很好的设计。
the compiler complains that
MyDerivedClass::func() does not take 3
arguments
号
实际上,根据类定义,myDerivedClass::func()只接受一个参数。
在myDerivedClass中添加"using class::func;"。
1 2 3 4 5 6 | class MyDerivedClass : public MyBaseClass { public: using MyBaseClass::func; int func(float a); }; |