我在这里学习c ++。
我正在学习有关继承和类的更多信息,但遇到以下问题:
class A
{
public:
std::vector<int> vect1;
};
class B : A
{
public:
int x, y;
};
class C : B
{
c()
{
x=10;
y=30;
vect1.pushback(44);
}
};
为什么我不能从C类访问vect1?我该如何实现?
我也尝试过:
class C : B, A {...}
但随后它说vect1是模糊的(或类似的东西)。我正在使用视觉工作室。
谢谢。
答案 0 :(得分:5)
为什么我不能从C类访问vect1?
因为vect1
具有私有访问权限。子类无法访问基类的私有成员。他们只能访问受保护的成员或公共成员。
此外,A
是B
的私有基础,因此B
的子类无法访问它。大孩子只能进入受保护的基地或公共基地。
用class
关键字定义的类的默认访问说明符是私有的(对于用关键字struct
定义的类的默认访问说明符是公共的)。要用另一个访问说明符声明一个库,可以将访问说明符关键字放在声明中每个库的前面:
class B : protected A
{
// ...
};
要使用其他访问说明符声明成员:
class A
{
protected:
std::vector<int> vect1;
};
答案 1 :(得分:3)
要获取从派生类到基类的访问权限,您应该同时进行以下操作:
类似于以下内容:
#include <vector>
class A
{
protected:
std::vector<int> vect1;
};
class B : public A
{
protected:
int x, y;
};
class C : public B
{
public:
C(){
x=10;
y=30;
vect1.push_back(44);
}
};