Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 私有变量继承_C++_Variables_Inheritance_Private - Fatal编程技术网

C++ 私有变量继承

C++ 私有变量继承,c++,variables,inheritance,private,C++,Variables,Inheritance,Private,我对私有变量是如何继承的感到困惑,当我试图在继承的类中使用它们时,我会错误地告诉我的变量是私有的 一个简单的例子 比如说: //dog.h class dog { private: bool fluffy; public: ... }; 让我们说: //dog.cpp #include "dog.h" ... 现在: 以及: 如果我尝试使用groom函数,会出现如下错误: error: 'bool dog::fluffy' is private 我做错了什么? 可选:将来设

我对私有变量是如何继承的感到困惑,当我试图在继承的类中使用它们时,我会错误地告诉我的变量是私有的

一个简单的例子

比如说:

//dog.h
class dog
{
private:
    bool fluffy;
public:
    ...
};
让我们说:

//dog.cpp
#include "dog.h"
...
现在:

以及:

如果我尝试使用groom函数,会出现如下错误:

error: 'bool dog::fluffy' is private
我做错了什么?
可选:将来设计此解决方案的最佳方法是什么?

最重要的继承规则是:

除了同一类的成员之外,任何地方都无法访问该类的私有成员。

此外,在私人继承方面:

基类的所有公共成员都成为派生类的私有成员&
基类的所有受保护成员都成为派生类的私有成员

读得好:

子类无法访问超类
private
变量-这就是它们
private
的原因。你需要让它们受到保护,才能做你想做的事+1用于从狗中派生shepherd。@WillyGoat:添加了我先前答案的链接,以便您理解访问说明符和继承。一旦你读了它,你就能更好地理解它们,并自己决定需要使用什么。
//shepard.cpp
#include "shepard.h"
void shepard::groom()
{
    fluffy = false;
}
error: 'bool dog::fluffy' is private