c++ - 访问派生类 C++ 的私有(private)成员

标签 c++ inheritance polymorphism member derived-class

<分区>

我试图通过基类的对象访问派生类的私有(private)成员。这是我正在尝试做的事情:

 class A {

      private:

           int a, b;

      public:
           A(_a, _b) : a(_a), b(_b) {}
           int getA() { return a; }
           int getB() { return b; }
 };

 class B : public A {

      private:
           int c;

      public:
           B(_a, _b, _c) : A(_a, _b), c(_c) {}
           int getC() { return c; }

 };

 vector<A*> objects;
 A* retVal = new B(1,2,3);
 objects.push_back(retVal);

现在如何访问它?

 objects[0] -> getC();

我有点懵。

提前致谢。

最佳答案

如果您知道该对象实际上是派生类型B,您可以这样做:

static_cast<B*>(objects[0])->getC();

如果你错了并且对象实际上不是 B 类型(或 B 的子类),你的程序将调用未定义的行为,所以不要这样做那个。

关于c++ - 访问派生类 C++ 的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23853357/

相关文章:

javascript - 一个 JavaScript 对象可以有一个原型(prototype)链,同时也是一个函数吗?

java - Java 中的动态绑定(bind)遇到问题

c++ - 在 winavr 中需要帮助

c++函数地址在附加的探查器库中与主题代码库中不同

java - 检查类型后将父对象作为子对象传递

c# - 在 WCF 服务和客户端之间共享接口(interface)(标记为 w/ServiceContract)

C#:限制方法参数中的类型(不是泛型参数)

C++:在基本模板类中调用派生的专用虚函数

c++ - 这个编译错误是typedef int (*j)() throw(A)吗?

C++ - 如何内联驻留在 .lib 中的函数?