我需要通过基类静态变量访问派生类成员
I need to access a derived class member through the base class static variable
我需要通过基类变量访问派生类成员变量。
Class A{
};
Class B:public A {
int data;
};
现在我需要做一些类似的事情
A *pb = new B()
pb->data = 10;
但问题是我无法访问没有派生成员类的派生成员类。
是的,我知道如何使用虚拟函数。
谢谢,我真的很感谢你的帮助。
需求指向一个错误的设计。
但是,如果您真的坚持编写糟糕的代码,您可以直接返回到B *
。
如果没有虚拟函数,你唯一能做的就是向下转换它
- 如果启用了RTTI,并且父类中至少有一个虚拟函数,则可以使用dynamic_cast,这样可以检查强制转换是否成功
- static_cast将允许您在继承树中强制转换到您下面的某个对象,但您将失去检查它是否成功的能力
- 你也可以完全放弃谨慎,使用C型演员阵容
简单回答:你不能。因为您的编译器不知道pb
是什么。它的类型可能是A
。但是,您可以使用dynamic_cast
,它返回B
指针,如果不可能,则返回NULL
。
A *pa = new B();
B *pb = dynamic_cast<B*>(pa);
if (pb) {
pb->data = 10;
}
else {
...
}
无论如何,如果你需要这样做,这可能意味着你应该修改你的设计,因为升级不是一个好主意。然而,有时你无法避免它。例如,当使用外部库等时。
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- 通过按地址访问变量
- 通过 get-Method 访问变量在类外不起作用
- 是否可以使用指针访问变量以避免直接编辑变量?
- 我无法访问变量的值,即使我通过范围传递了它
- 简单的问题 - 如何从单独的"结构"内的'class'访问变量?
- (C++) 从另一个类访问变量时值无效
- 返回实例变量的c++方法可以访问变量中的数据,但不能更改它,但在编译时不会生成错误
- 是否可以从字符串访问变量?
- 变量 z 无法从其他函数访问变量 x
- 如何在 C++ 中从 void 返回函数访问变量
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 在C 中本地声明隐藏的封闭范围(而非全局)中访问变量
- 从函数中删除动态内存分配,但无法访问变量
- 如何从派生类中的基类访问变量的值?
- 如何通过指针更快地访问变量,然后直接访问变量?
- 如何在公共类 c++ 中访问变量的值
- 从 Visual Studio 中的多个源文件访问变量
- 使用命名空间和模板类访问变量
- 从子对话框访问变量