我需要通过基类变量访问派生类成员变量。

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/

10-15 06:27