![](/img/trans.png)
[英]C++ - Why does the default constructor work even in private inheritance
[英]C++ - Constructor Inheritance with private parameters
您好,我在处理继承构造函数时遇到麻烦。 我无法访问父母的字段。
这是我的MyClass.h:
#include "Parent.h"
class MyClass : public Parent {
public:
MyClass(string otherParameters);
};
这是MyClass.cpp:
#include MyClass.h
MyClass::MyClass(string otherParameters) : Parent() {
parent_field = "something";
}
字段otherParameters并非来自Parent,而是仅与类MyCLass有关。 编译器弹出错误并告诉我Parent :: parent_field是私有的。 我不了解,我的班级MyClass应该继承了parent_field属性,所以为什么我不能访问它? 谢谢
MyClass
只能访问Parent
的public
成员和protected
成员。 如果parent_field
是Parent
的私有成员,则MyClass
无法看到它(除非您声明MyClass
是Parent
的朋友,这是一个奇怪的设计)。
看起来您希望能够通过Parent
构造函数设置parent_field
:
struct Parent
{
Parent(const std::string& s) : parent_field(s) {}
// other code as before
};
然后在MyClass
的构造函数中使用它:
MyClass::MyClass(string otherParameters) : Parent("something") {}
这会将Parent::parent_field
设置为"something"
。
因为它是private
。 类的private
部分中的函数和变量仅可用于该类,并且仅可用于该类。 如果希望能够在继承的类中使用函数或变量,但仍不允许它们public
,则必须将它们放在protected
部分中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.