c++ - 为什么我不能在下面的代码中访问 A 类函数?

标签 c++ inheritance

我为 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 子对象code> 不能从不是 c 的成员函数的函数访问。

关于c++ - 为什么我不能在下面的代码中访问 A 类函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16294748/

相关文章:

c++ - Windows Aero 渲染错误

c++ - 如何在不同文件中使用嵌套命名空间?

c++ - 运行时错误-UndefinedBehaviourSanitizer

C++ 类不是自身的基础

c++ - C++ main函数中的继承初始化

swift - 如何在其子类中修改类的属性?

c++ - 输出输入的拼接版本

c++ - 使用管道 : FIFOs overfilling 在 C++ 中创建调度队列/线程处理程序

python - 在 django 中正确使用具有自引用外键的子类/代理?

java - 继承和通过方法传递参数