class Base{
common methods
};
class Derived: public Base{
private:
int a;
char* arr;
public:
Ctor
Dtor
};
int main(){
Base* B;
Derived D;
B = &D;
如何从B中提取有关D的数据成员的信息?
不介意语法错误,如果我有一个以上的派生类,我更关心如何获取数据成员或如何编译两个派生类。
答案 0 :(得分:0)
当您知道指针对象是Derived
时,您可以向下转发指针从Base*
到Derived*
,最好使用{{1 }}。如果您不知道,但基类有一个或多个虚拟方法,那么您可以通过static_cast
检查。但是最好你应该在dynamic_cast
中使用虚拟方法,这样你就可以在不进行强制转换的情况下做任何事情,否则,你最好不要丢弃特定的类型信息。
答案 1 :(得分:0)
首先需要将其强制转换为派生类型:
假设v2是Derived类的字符串成员
if (auto* d = dynamic_cast<Derived*>(B))
std::cout << "v2: " << d->v2 << std::endl;
答案 2 :(得分:0)
在Base中定义虚函数,然后在Derive类中实现它。这有帮助吗?