#include using namespace std; class Father { public: Father() { cout << "Father" << endl; } ~Father() { cout << "~Father" << endl; } int m_bear; int m_age; }; class Mother { public: Mother() { cout << "Mother" << endl; } ~Mother() { cout << "~Mother" << endl; } int m_bra; int m_age; }; class Son : public Mother, public Father { public: Son() { cout << "Son" << endl; } ~Son() { cout << "~Son" << endl; } }; int main() { Son jack; cout << sizeof(jack) << endl; jack.m_bear = 10; // jack.m_age = 20; jack.Mother::m_age = 20; cout << jack.Father::m_age << endl; return 0; } 在类Son中,同时继承了Mother和Father类,这两个类中都有一个名为m_age的成员变量。当使用jack.m_age = 20时,编译器无法确定要访问Mother类中的m_age还是Father类中的m_age,因此会产生二义性错误。为了解决这个问题,可以使用作用域限定符来指明要访问的是哪个类中的m_age,例如jack.Mother::m_age = 20。

C++ 多重继承中的二义性问题及解决方法

原文地址: https://www.cveoy.top/t/topic/qsjG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录