不可获得的继承的公共财产

Inaccessible inherited public property

本文关键字:财产 继承 可获得      更新时间:2023-10-16

我试着用一些类编写一个基本的c++程序,遇到了一个问题。程序如下所示:

#include<iostream>
using namespace std;
class A {
public:
    int i;
    A(int ai) {this->i = ai;}
    A() {}
};
class B : A {
public:
    A aa;
    B(A &a) : A(a.i) {
        aa = a;
    }
};
int main()
{
    A a(5);
    B b(a);
    cout << "Hello World!" << b.i;
    return 0;
}

使用

编译程序失败
In function 'int main()':
Line 6: error: 'int A::i' is inaccessible
compilation terminated due to -Wfatal-errors.

但是变量i在类A中是公共的。我做错了什么?

您正在私下继承A:

class B : A {
       ^^^^^^

您需要公开继承A:

class B : public A {
       ^^^^^^^^^^^^^