【问题标题】:Understanding how to solve ambiguous member requests in c++了解如何在 C++ 中解决模棱两可的成员请求
【发布时间】:2013-05-13 11:15:17
【问题描述】:

如何在不继承类 A 的情况下从类 D 使用类 A 中的函数和(尽管我理解这是不好的做法,但我根本不允许更改继承)并且不删除从 D 中的 C 和 B 的继承?我似乎无法找到解决成员请求的方法是模棱两可的错误。我(错误地)理解,无论距离多远

class A 
{
public:
  void DoEverything(int){ }
};

class B : public A
{
public:
    ...
};

class C : public A
{
public:
    ...
};

class D : public C : public B
{
public:
    ...
};

int main() 
{
  D dMan;
  int i = 2;

  dMan.DoEverything(i);
}

我的示例大致基于此处的“模糊基类(仅限 C++)”示例:http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/topic/com.ibm.xlcpp8a.doc/language/ref/cplr138.htm#cplr138,但这并没有帮助我理解问题。

【问题讨论】:

标签: c++ inheritance ambiguous


【解决方案1】:

首先,要使其正常工作,只需进行以下更改

B 类:虚拟公共 A ...

C 类:虚拟公共 A

多重继承中的这个问题称为菱形问题。查看此链接以了解更多信息 http://www.cprogramming.com/tutorial/virtual_inheritance.html

【讨论】:

  • ...嗯,这比我想象的要容易得多。谢谢老兄。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 2012-12-08
  • 1970-01-01
  • 2016-01-03
相关资源
最近更新 更多