gpt4 book ai didi

c++ - 以编程方式获取派生类的名称

转载 作者:IT老高 更新时间:2023-10-28 22:19:24 34 4
gpt4 key购买 nike

我正在尝试做类似的事情:

class Base {
public:
Base() {
cout << typeid(*this).name() << endl;
}
...
};

class Derived : public Base { ... }
class MoreDerived : public Derived { ... }

Derived d;
MoreDerived m;

问题是,当我需要查看 DerivedMoreDerived 时,我总是将 Base 打印到屏幕上。有没有办法让 typeid 以这种方式与派生类一起工作?或者除了typeid还有别的办法吗?

注意:我正在向已编码的套件添加功能,因此我不想在派生类自己返回此值的基类中添加虚拟方法。另外,不用担心运行时开销,这将是调试编译开关的一部分。

最佳答案

在构造函数 Base() 中,对象仍然是一个“Base”实例。它将在 Base() 构造函数之后成为 Derived 实例。尝试构造之后再做,它会起作用。

参见示例:

关于c++ - 以编程方式获取派生类的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6747089/

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