我需要通过基类变量访问派生类成员变量。
Class A{
};
Class B:public A {
int data;
};
现在我需要做这样的事情
A *pb = new B()
pb->data = 10;
但是问题是我无法访问派生成员类。
是的,我知道如何使其与虚拟功能一起使用。
谢谢,非常感谢您的帮助。
最佳答案
简短答案:您不能。因为您的编译器不知道pb
是什么。它可能是A
类型。但是,您可以使用dynamic_cast
,如果不可能的话,它会返回B
指针或NULL
。
A *pa = new B();
B *pb = dynamic_cast<B*>(pa);
if (pb) {
pb->data = 10;
}
else {
...
}
无论如何,如果您需要这样做,则可能意味着您应该修改设计,因为上流不是一个好主意。但是有时候,您只是无法避免。例如。使用外部库等时。
关于c++ - 我需要通过基类静态变量访问派生类成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9299871/