首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取void*指针的typeid?

获取void指针的typeid是在C++中通过RTTI(Run-Time Type Information)来实现的。RTTI是C++的一种特性,允许在运行时获取对象的类型信息。要获取void指针的typeid,需要先将其转换为实际的对象类型,然后使用typeid操作符来获取类型信息。

以下是一个示例代码:

代码语言:cpp
复制
#include<iostream>
#include <typeinfo>

class Base {
public:
    virtual ~Base() {}
};

class Derived : public Base {};

int main() {
    Base* b = new Derived();
    void* p = dynamic_cast<void*>(b);
    const std::type_info& t = typeid(*static_cast<Base*>(p));
    std::cout << t.name()<< std::endl;
    delete b;
    return 0;
}

在这个示例中,我们首先创建了一个Base类的派生类Derived,并且在Base类中添加了一个虚拟析构函数,以便在运行时正确地进行类型转换。然后我们创建了一个Base类的指针,并将其指向一个Derived类的实例。接着我们将该指针转换为void*类型,并使用typeid操作符获取该指针所指向对象的类型信息。最后我们将类型信息打印出来,并释放内存。

需要注意的是,在使用typeid操作符之前,需要将void指针转换回原始的对象类型,否则会导致编译错误。在这个示例中,我们使用了static_cast来将void指针转换回Base*类型,然后使用typeid操作符获取类型信息。

总之,要获取void*指针的typeid,需要先将其转换为实际的对象类型,然后使用typeid操作符来获取类型信息。在实际应用中,可以根据获取到的类型信息来实现不同的逻辑处理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 领券