问之前,我引用了这个older question .但我仍有疑问。
struct B1 {
virtual void fun () = 0;
};
struct B2 {
void fun () { cout<<"B2::fun()\n"; }
void fun (int i) {}
};
struct D : B1, B2 {
using B2::fun; // This line doesn't help
};
int main ()
{
B1 *pB1 = new D; // Error: cannot allocate 'D' because 'B1::fun()' is abstract
pB1->fun();
}
- C++ 标准不接受继承成员函数来解决
纯虚拟
机制的任何原因? - 为什么
使用
关键字无助于解决此错误? (编译器:linux-64 g++) - 哪个函数用于
using
关键字,B2::fun()
或B2::fun(int)
? (该行没有歧义)
最佳答案
using B2::fun;
只允许您使用 B2::fun
方法,但是由于 B1
是一个抽象类,您必须实现 该类的纯虚函数乐趣能够创建其对象。
关于c++ - 为什么纯虚机制不考虑继承函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5617043/