其他分享
首页 > 其他分享> > 具有相同名称的C虚拟覆盖函数

具有相同名称的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