具有相同名称的C虚拟覆盖函数
作者:互联网
我有类似的东西(简化)
class A
{
public:
virtual void Function () = 0;
};
class B
{
public:
virtual void Function () = 0;
};
class Impl : public A , public B
{
public:
????
};
如何为A实现Function()和为B实现Function()?
Visual C允许您仅内联定义特定函数(即不在cpp文件中),
但我想这是一个扩展.海湾合作委员会抱怨这一点.
是否有标准的C方式告诉编译器我要覆盖哪个函数?
(visual c 2008)
class Impl : public A , public B
{
public:
void A::Function () { cout << "A::Function" << endl; }
void B::Function () { cout << "B::Function" << endl; }
};
谢谢!
解决方法:
你不能在那里使用合格的名字.我写了void Function(){…}你要覆盖这两个函数. Herb Sutter显示how it can be solved.
另一个选择是重命名这些函数,因为显然他们做了不同的事情(否则我没有看到以相同的行为覆盖两者的问题).
标签:diamond-problem,c,virtual,overriding 来源: https://codeday.me/bug/20190926/1819107.html