了解如何在c++中解决不明确的成员请求
Understanding how to solve ambiguous member requests in c++
我如何从类D中使用类a中的函数而不继承类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,但这并没有帮助我理解这个问题。
首先,要使它工作,只需做以下更改
类B:虚拟公网A…
类C: virtual public A
这个问题在多重继承中被称为菱形问题。点击这个链接了解更多http://www.cprogramming.com/tutorial/virtual_inheritance.html
相关文章:
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- Visual C++(VS2017)中用户定义的转换不明确
- 重载类方法的不明确调用
- 为函数定义符号不明确的指针参数
- 父类的私有函数会导致对具有相同名称和相似参数的子类中的公共函数的不明确调用
- 不明确的成员模板查找
- 如果存在具有不同参数的继承成员,为什么对 C++ 结构函数的调用不明确?
- 不明确的可变参数类成员访问
- 是否有一种方法可以将C 类成员引用到向量而不明确添加它们
- C++多个继承私有成员不明确访问
- 对成员函数set_value的错误调用是不明确的(在 xcode 中使用 pugixml 库)
- 解决方案叮当警告-成员模板不明确
- 使用可变模板参数传递成员函数指针是不明确的
- 当两个超类具有具有相同名称但签名不同的成员函数时,不明确
- C++模板:专用成员函数,用于解决主模板中不明确的重载情况
- C++11成员初始化列表不明确
- 了解如何在c++中解决不明确的成员请求
- 对重载了ref限定符的成员函数的调用不明确
- 区分不明确的成员请求错误和 SFINAE 上下文中成员不存在的错误
- C++ 成员函数名称与标准 C 库不明确