本文介绍了访问派生类C ++的私有成员的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图通过基类的对象访问派生类的私有成员.这是我想做的事情:
I am trying to access derived class' private members via an object of the base class. Here is what I'm trying to do :
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
,则可以执行以下操作:
If you know the object is actually of derived type B
, you can do this:
static_cast<B*>(objects[0])->getC();
如果您错了,并且该对象实际上不是B
类型(或B
的子类),则您的程序将调用未定义的行为,所以不要这样做.
If you are wrong and the object is not actually of type B
(or a subclass of B
), your program will invoke undefined behavior, so don't do that.
这篇关于访问派生类C ++的私有成员的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!