gpt4 book ai didi

c++ - 在 C++ 中查找对象的类型

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:10 28 4
gpt4 key购买 nike

我有一个类 A 和另一个从它继承的类 B。我重写了一个接受类型 A 的对象作为参数的函数,所以我必须接受一个 A。但是,我后来调用的函数只B 有,所以如果传递的对象不是 B 类型,我想返回 false 不继续。

找出传递给我的函数的对象是哪种类型的最佳方法是什么?

最佳答案

dynamic_cast 应该可以解决问题

TYPE& dynamic_cast<TYPE&> (object);
TYPE* dynamic_cast<TYPE*> (object);

dynamic_cast关键字将数据从一个指针或引用类型转换为另一个,执行运行时检查以确保转换的有效性。

如果您尝试将指针强制转换为指向不是实际对象类型的类型,则强制转换的结果将为 NULL。如果您尝试将引用强制转换为不是实际对象类型的类型,则强制转换将抛出 bad_cast。异常。

确保基类中至少有一个虚函数来使 dynamic_cast 工作。

维基百科主题 Run-time type information

RTTI is available only for classes that are polymorphic, which meansthey have at least one virtual method. In practice, this is not alimitation because base classes must have a virtual destructor toallow objects of derived classes to perform proper cleanup if they aredeleted from a base pointer.

关于c++ - 在 C++ 中查找对象的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34254906/

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