C++使用private继承时遇到的小问题

C++ private继承使用访问申明,函数重名调用问题
怎样使用Z的实例化对象调用Y的show()方法,Y的show2()方法没有重名可以直接使用
#include 
using namespace std;

class X {
    public:
        void show() {
            cout<<"X"<class Y {
    public:
        void show() {
            cout<<"Y"<void show2() {
            cout<<"Y2"<class Z: public X, private Y {
    public:
        void show() {
            cout<<"Z"<// 访问申明 
        Y::show2;    // 访问申明 
};

int main() {
    Z obj;
    obj.show();            // 输出Z 
    obj.X::show();        // 输出X 
                        // 希望通过obj调用Y::show(), 使用obj.Y::show()会报错 
    obj.show2();        // 输出Y2 
    
    return 0;
} 

私有的,不让外部调用,那你就加个public的接口函数好了啊


#include <iostream>
using namespace std;

class X {
public:
    void show() {
        cout << "X" << endl;
    }
};

class Y {
public:
    void show() {
        cout << "Y" << endl;
    }

    void show2() {
        cout << "Y2" << endl;
    }
};

class Z : public X, private Y {
public:
    void show() {
        cout << "Z" << endl;
    }
    void getshow()
    {
        Y::show();
        Y::show2();
    }
};

int main() {
    Z obj;
    obj.show();            // 输出Z 
    obj.X::show();        // 输出X 
    obj.getshow();

    return 0;
}