1.背景: 在使用C++ 在MDK中写STM32程序时,发现有两个衍生类集成了统一个基类,编译时报错。
2.原因:从语法上看不出什么问题,但编译器在处理第一个派生类时,已经给基类分配内存了(当然一定是被调用了基类成员函数了),如果在处理第二个派生类时也会实例化一个对象,也会有基类的内存,所以在调用基类方法时,会出现歧义,固编译器报错。
3.解决: 第一,重载基类被调用函数到派生类;第二,使用虚拟继承。
1.背景: 在使用C++ 在MDK中写STM32程序时,发现有两个衍生类集成了统一个基类,编译时报错。
2.原因:从语法上看不出什么问题,但编译器在处理第一个派生类时,已经给基类分配内存了(当然一定是被调用了基类成员函数了),如果在处理第二个派生类时也会实例化一个对象,也会有基类的内存,所以在调用基类方法时,会出现歧义,固编译器报错。
3.解决: 第一,重载基类被调用函数到派生类;第二,使用虚拟继承。