为什么不能在下面的代码中访问A类函数

why cant i access class A function in following code?

本文关键字:访问 类函数 代码 不能 在下面 为什么      更新时间:2023-10-16

我得到的obj.a::get();的错误是类a是不可访问的,我知道obj.get()会标记一个错误,但我想这应该工作,这里有什么问题?

class a {
    int arg1;
public:
    a(int i){
        arg1 = i;
        cout << "a() called" << endl;
    }
    void get() {
        cout << "arg1=" << arg1 << endl;
    }
};

class b {
    int arg2;
public:
    b(int j) {
        arg2 = j;
        cout << "b() called" << endl;
    }
    void get() {
        cout << "arg2=" << arg2 << endl;
    }
};
class c: private a, private b {
    int arg3;
public:
    c(int i, int j, int k): b(k), a(j) {
        arg3 = k;
        cout << "c() called" << endl;
    }
};
int main() {
    c obj(1, 2, 3);
    obj.a::get();
}

c使用private派生自a,因此ca子对象不能从非c成员函数的函数中访问。