C ++继承错误:模棱两可的错误

赫舍姆·亚辛(Hesham Yassin)

在下一个代码中,在_tmain(..)中调用D :: f时出现歧义错误,因为B :: f覆盖了A :: f,A :: vtable中指向f的指针指向B :: f。

1)为什么编译器会给出模棱两可的错误?有人可以清除吗?

2)我试图通过将B :: f(int)更改为B :: f(char)重载A :: f(int),但错误并未消失!这是为什么?

继承图:

............A......
........../.|.\....
........A1..B..C...
..........\.|./....
............D......

代码:

struct A { 

 virtual void f(int x) {cout << "A::f";}; 
 virtual void g(int x) {cout << "A::g";}; 
 private: int n; 
}; 
struct A1: A { 
 virtual void h(int x) {f(x);}; 
}; 
struct B : virtual A { 
 void f(int x) {cout << "B::f";}; 
}; 
struct C : virtual A { 
 void g(int x) {cout << "C::g";}; 
}; 
struct D : A1, B , C { 

};
int _tmain(int argc, _TCHAR* argv[])
{
    D* d = new D();
    d->f(1);
    return 0;
}
尼基尔

您需要为以下项更改继承定义struct A1

struct A1: virtual A {

究其原因,钻石的继承模棱两可struct D正在f()A1两者获取方法B要仅继承一次,所有符合条件的类都必须虚拟继承该方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

模棱两可的错误:C ++ 11使用可变参数模板多重继承

来自分类Dev

模棱两可的错误:C ++ 11使用可变参数模板多重继承

来自分类Dev

C ++ const mysqlpp :: String模棱两可的错误

来自分类Dev

C ++ typedef继承模棱两可的问题

来自分类Dev

错误C2668:'boost :: bind':对重载函数的模棱两可的调用

来自分类Dev

MSVC-C2668对重载函数的模棱两可的调用-它是编译器错误吗?

来自分类Dev

C ++模板,模棱两可的重载

来自分类Dev

C ++ 11 Lambda模棱两可

来自分类Dev

C ++ libconfig模棱两可的重载

来自分类Dev

C ++ Cout,Cin和系统“模棱两可”

来自分类Dev

C ++临时类实例模棱两可

来自分类Dev

C ++模板模棱两可的实例化

来自分类Dev

C ++ libconfig模棱两可的重载

来自分类Dev

在C#中返回模棱两可的对象

来自分类Dev

C ++编译错误:无法从B转换为A,没有构造函数,或者构造函数重载模棱两可

来自分类Dev

Extensiong模棱两可的错误

来自分类Dev

Extensiong模棱两可的错误

来自分类Dev

C ++ 11/14 make_unique std :: string的模棱两可的重载

来自分类Dev

C ++中的重载函数为unsigned char和unsigned int导致模棱两可

来自分类Dev

ISO C ++说这些是模棱两可的,运算符重载

来自分类Dev

C ++构造函数与相同键/值类型的std :: map模棱两可

来自分类Dev

C ++构造函数与相同键/值类型的std :: map模棱两可

来自分类Dev

C ++构造函数“模棱两可”-但实际上并非如此

来自分类Dev

C ++中的重载函数为unsigned char和unsigned int导致模棱两可

来自分类Dev

C中的#define指令给出模棱两可的答案

来自分类Dev

(C++) 构造函数,默认参数,“调用重载...模棱两可”

来自分类Dev

MySQL错误:1064模棱两可的错误

来自分类Dev

模棱两可的虚拟继承

来自分类Dev

错误:对重载函数的模棱两可的调用

Related 相关文章

  1. 1

    模棱两可的错误:C ++ 11使用可变参数模板多重继承

  2. 2

    模棱两可的错误:C ++ 11使用可变参数模板多重继承

  3. 3

    C ++ const mysqlpp :: String模棱两可的错误

  4. 4

    C ++ typedef继承模棱两可的问题

  5. 5

    错误C2668:'boost :: bind':对重载函数的模棱两可的调用

  6. 6

    MSVC-C2668对重载函数的模棱两可的调用-它是编译器错误吗?

  7. 7

    C ++模板,模棱两可的重载

  8. 8

    C ++ 11 Lambda模棱两可

  9. 9

    C ++ libconfig模棱两可的重载

  10. 10

    C ++ Cout,Cin和系统“模棱两可”

  11. 11

    C ++临时类实例模棱两可

  12. 12

    C ++模板模棱两可的实例化

  13. 13

    C ++ libconfig模棱两可的重载

  14. 14

    在C#中返回模棱两可的对象

  15. 15

    C ++编译错误:无法从B转换为A,没有构造函数,或者构造函数重载模棱两可

  16. 16

    Extensiong模棱两可的错误

  17. 17

    Extensiong模棱两可的错误

  18. 18

    C ++ 11/14 make_unique std :: string的模棱两可的重载

  19. 19

    C ++中的重载函数为unsigned char和unsigned int导致模棱两可

  20. 20

    ISO C ++说这些是模棱两可的,运算符重载

  21. 21

    C ++构造函数与相同键/值类型的std :: map模棱两可

  22. 22

    C ++构造函数与相同键/值类型的std :: map模棱两可

  23. 23

    C ++构造函数“模棱两可”-但实际上并非如此

  24. 24

    C ++中的重载函数为unsigned char和unsigned int导致模棱两可

  25. 25

    C中的#define指令给出模棱两可的答案

  26. 26

    (C++) 构造函数,默认参数,“调用重载...模棱两可”

  27. 27

    MySQL错误:1064模棱两可的错误

  28. 28

    模棱两可的虚拟继承

  29. 29

    错误:对重载函数的模棱两可的调用

热门标签

归档