无法使用派生类访问类的私有成员的 C++ 代码

罗尼45098

我目前在下面的代码中尝试在实例化 Solid 类型的对象时将数据成员 x、y 和 z 初始化为 0。第 25、26 和 27 行包含错误,我将如何重写这些行以访问 x 和 y 成员并将它们设置为 0?

编辑1:我在下面写出了我的代码。

编辑 2:为了解决问题,唯一可以更改的代码行是包含错误的行。应该重写派生类以访问私有数据成员。

class Shape
{

private:

    int x, y;

protected:

    string _type;

public:

    Shape() { x = y = 0; }
    Shape(int a, int b) { x = a; y = b; }
    string type() { return _type; }
    void stype(string val) { _type + val; }
    int getx() { return x; }
    int gety() { return y; }

};

class Solid : public Shape
{

    int z;

public:

    Solid() { x = y = z = 0; } // errors
    Solid(int a, int b, int c) { x = a; y = b; z = c; } //
    int Volume() { return x * y * z; } //
};

int main()

{

    Solid ob1;

    return 0;
}
莫布迪尼洛

您无法访问基类的私有成员,本练习的重点是您不需要这样做——而不是您应该想出一种方法来做到这一点。

你的默认构造函数应该只设置它自己的成员 -Shape默认构造函数负责它自己的成员:

Solid() { z = 0; }

或(首选方法,实际上是初始化而不是赋值)

Solid() :z(0) {} 

另一个构造函数应该初始化基类,然后z

Solid(int a, int b, int c) : Shape(a,b), z(c){}

并且Volume应该使用提供的访问器:

int Volume() { return getx() * gety() * z; }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

访问派生类C ++的私有成员

来自分类Dev

C ++ | 派生类正在访问基类的私有成员,而不是其自己的私有成员

来自分类Dev

重写派生类C ++中基类私有成员的行为

来自分类Dev

无法从C ++中的类内部访问私有成员?

来自分类Dev

C ++-访问基类的受保护/私有成员

来自分类Dev

C ++:无法从派生类访问受保护的成员

来自分类Dev

错误C2248:无法访问在类中声明的私有成员

来自分类Dev

c++派生类对象没有成员,为什么?

来自分类Dev

为什么 C++ 模板类可以访问其基类的私有成员?

来自分类Dev

C ++类模板函数可以访问嵌套类的私有成员

来自分类Dev

错误C2248:无法访问在类中声明的私有成员,编译器行为异常

来自分类Dev

错误C2248:“ CvSVM :: CvSVM”:无法访问在类“ CvSVM”中声明的私有成员

来自分类Dev

错误:C2248:'QVariant :: QVariant':无法访问在类'QVariant'中声明的私有成员

来自分类Dev

如何修复Unreal和C ++中的“无法访问在类中声明的私有成员”错误

来自分类Dev

错误C2248:“ klientPracownik :: klientPracownik”:无法访问在类“ klientPracownik”中声明的私有成员

来自分类Dev

使公共成员变量访问C ++中同一类的私有成员

来自分类Dev

如何启用朋友类的朋友功能直接在C ++中访问其私有成员

来自分类Dev

如何从Swift扩展访问Objective-C类的私有成员?

来自分类Dev

C ++如何在std :: for_each内部的类中访问私有成员

来自分类Dev

从C ++中的“接口”访问派生类成员?

来自分类Dev

访问派生类 C++ 中的受保护成员

来自分类Dev

成为私有成员(c ++类)意味着什么?

来自分类Dev

C ++访问私有类成员

来自分类Dev

c ++模板模板:无法访问私有成员

来自分类Dev

C++ 使用 CRTP 检测朋友类的私有成员

来自分类Dev

虚幻 C++ 错误:错误 C2248:“UPrimitiveComponent::bGenerateOverlapEvents”:无法访问类“UPrimitiveComponent”中声明的私有成员

来自分类Dev

派生类不能访问私有成员(尽管构造函数是在基类中定义的)

来自分类Dev

派生类能够访问其基类的私有成员

来自分类Dev

错误C2248:'std :: unique_ptr <_Ty> :: unique_ptr':无法访问在类'std :: unique_ptr <_Ty>'中声明的私有成员

Related 相关文章

  1. 1

    访问派生类C ++的私有成员

  2. 2

    C ++ | 派生类正在访问基类的私有成员,而不是其自己的私有成员

  3. 3

    重写派生类C ++中基类私有成员的行为

  4. 4

    无法从C ++中的类内部访问私有成员?

  5. 5

    C ++-访问基类的受保护/私有成员

  6. 6

    C ++:无法从派生类访问受保护的成员

  7. 7

    错误C2248:无法访问在类中声明的私有成员

  8. 8

    c++派生类对象没有成员,为什么?

  9. 9

    为什么 C++ 模板类可以访问其基类的私有成员?

  10. 10

    C ++类模板函数可以访问嵌套类的私有成员

  11. 11

    错误C2248:无法访问在类中声明的私有成员,编译器行为异常

  12. 12

    错误C2248:“ CvSVM :: CvSVM”:无法访问在类“ CvSVM”中声明的私有成员

  13. 13

    错误:C2248:'QVariant :: QVariant':无法访问在类'QVariant'中声明的私有成员

  14. 14

    如何修复Unreal和C ++中的“无法访问在类中声明的私有成员”错误

  15. 15

    错误C2248:“ klientPracownik :: klientPracownik”:无法访问在类“ klientPracownik”中声明的私有成员

  16. 16

    使公共成员变量访问C ++中同一类的私有成员

  17. 17

    如何启用朋友类的朋友功能直接在C ++中访问其私有成员

  18. 18

    如何从Swift扩展访问Objective-C类的私有成员?

  19. 19

    C ++如何在std :: for_each内部的类中访问私有成员

  20. 20

    从C ++中的“接口”访问派生类成员?

  21. 21

    访问派生类 C++ 中的受保护成员

  22. 22

    成为私有成员(c ++类)意味着什么?

  23. 23

    C ++访问私有类成员

  24. 24

    c ++模板模板:无法访问私有成员

  25. 25

    C++ 使用 CRTP 检测朋友类的私有成员

  26. 26

    虚幻 C++ 错误:错误 C2248:“UPrimitiveComponent::bGenerateOverlapEvents”:无法访问类“UPrimitiveComponent”中声明的私有成员

  27. 27

    派生类不能访问私有成员(尽管构造函数是在基类中定义的)

  28. 28

    派生类能够访问其基类的私有成员

  29. 29

    错误C2248:'std :: unique_ptr <_Ty> :: unique_ptr':无法访问在类'std :: unique_ptr <_Ty>'中声明的私有成员

热门标签

归档