gpt4 book ai didi

c++ - 如何将基类指针转换为派生类的指针? C++

转载 作者:搜寻专家 更新时间:2023-10-31 00:16:21 25 4
gpt4 key购买 nike

我通过参数将(A 类)的 2 个指针传递给它的派生类(B 类)。

其中一个指针必须属于 B 类,这样我才能调用在 B 中声明的方法。

我该怎么做?

静态转换不是只能让您以相反的方式进行吗? (B 被动态转换为类型 A)。有人告诉我不要做 c 风格的转换。重新解释转换可能很危险?

我能想到的唯一其他方法是静态转换。这是我在这里需要的吗?

谢谢

最佳答案

通常,您希望通过仅使用声明为 virtual 的成员函数来避免这种情况。在基地。如果必须将指针转换为派生类,请确保基类至少有一个 virtual函数(任何函数或析构函数就足够了),然后使用 dynamic_cast<T> :

BaseClass *bp = new DerivedClass();
...
DerivedClass *dp = dynamic_cast<DerivedClass*>(bp);
if (!dp) {
cerr << "Not a derived class!" << endl;
}

如果bp指向 DerivedClass , 动态转换成功;否则,它将失败,并返回一个空指针。

您可能需要使用特殊标志进行编译以启用 RTTI 支持。

关于c++ - 如何将基类指针转换为派生类的指针? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16370094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com