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

在运行时获取C++对象名称

在C++中,要在运行时获取对象的名称,可以使用反射机制。C++标准库中没有直接提供反射机制,但可以通过一些方法实现。

一种常用的方法是使用宏定义和模板来实现类名和对象名的记录。例如:

代码语言:c++
复制
#include<iostream>
#include<string>

#define REGISTER_CLASS(classname) \
    static const char* g_classname##_name = #classname;

class Base {
public:
    virtual ~Base() {}
    const char* GetClassName() const {
        return g_classname_name;
    }
};

class Derived : public Base {
public:
    REGISTER_CLASS(Derived)
};

int main() {
    Derived d;
    std::cout << "Object name: " << d.GetClassName()<< std::endl;
    return 0;
}

在上面的代码中,我们使用了宏定义 REGISTER_CLASS 来记录每个类的名称。在每个类的实现中,我们使用该宏来注册类名。在 Base 类中,我们提供了一个 GetClassName 方法来获取类名。

需要注意的是,这种方法只能获取类名,而不能获取对象名。如果需要获取对象名,可以考虑使用第三方库,例如 Boost.TypeIndex。

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

相关·内容

  • 领券