C++继承和相同的功能名称
C++ inheritance and same funciton names
>我有这种情况:
class A
{
public:
A();
virtual ~A();
void doSomething();
};
class B : public A
{
public:
B();
void doSomething(int parameter);
};
如果我执行以下操作:
int main()
{
B b;
b.doSomething();
}
它给了我一个编译错误(没有匹配的函数(。 如何在不更改B
功能名称的情况下解决此问题?B
派生自A
因此它也具有不带参数的doSomething()
函数。为什么它不起作用? 感谢您的帮助。
目前,B::doSomething
隐藏A::doSomething
.
您可以使用using
来解决问题:
class B : public A
{
public:
using A::doSomething;
B();
void doSomething(int parameter);
};
这个答案只是这个解决方案的替代方法,以防你不被允许修改类B
。
如果不允许修改类B
以在类中添加using A::doSomething;
(如此处已经建议的那样(,则可以获取指向成员函数A::doSomething()
的指针,然后通过实例上的该成员函数指针调用它b
:
auto fptr = &A::doSomething;
B b;
(b.*fptr)();
或者更简单,通过正确限定成员函数,不需要成员函数指针:
B b;
b.A::doSomething(); // calls A::doSomething()
相关文章:
- C++继承和相同的功能名称
- 有没有办法C++将给定类的功能限制为仅另一个类(不使用继承,朋友)?
- C++17 'inline variable' vs 'extern' 关键字继承自 C 的新功能
- 为什么虚拟继承即使不涉及虚拟功能也需要 vtable?
- 抽象类 A 由类 C 继承"through"类 B "intermediary"。如何声明虚拟功能?
- 使用继承和虚拟功能应用五个规则
- 继承多态性功能调用
- C++继承 - 覆盖功能,包括使用 "::" s、.h 文件和.cpp文件
- GCC称将功能与多个继承过载时,称其为模棱两可,但Clang和MSVC没有
- C 从同一基本模板类覆盖功能,具有多个继承模棱两可的函数调用
- 有关继承层次结构的问题,没有任何虚拟功能
- C 继承问题错误C2084功能已经具有主体
- 朋友功能是否继承?为什么基类朋友功能在派生的类对象上工作
- 对具有继承功能的结构使用初始值设定项列表
- 继承和虚拟功能
- 继承:从基类调用派生的类功能
- 在C 中继承类功能:一般问题,以更好地理解,如果有人可以指出我的错误
- 需要有关多个继承和可选功能覆盖C 的建议
- 朋友功能和继承在CPP中
- 继承和功能