gpt4 book ai didi

c++ - 如何找出哪个派生类正在处理

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:41 26 4
gpt4 key购买 nike

我有一个 BaseInterface 类,它有一个由派生类实现的 virtual void execute():

class BaseInterface
{
public:
virtual void execute(int a) = 0;
}

而且我有大量的派生类覆盖了 execute void:

class ProcessN : public BaseInterface
{
public:
void execute(int a);
}

我的派生类之一的执行无效有一个错误。但是有大量的派生类。很难一一检查。我很难找到错误。

C++ 中有没有一种方法可以通过基类找出当前正在处理哪个派生类?

编辑:好的,在对评论进行有用的讨论后,我改进了我的问题:

我可以在 BaseInterface 类的构造函数中实现一些东西,以打印出当前处理派生类的信息吗?

最佳答案

你要找的是typeid

BaseInterface *a = new Process1();
BaseInterface *b = new Process2();

cout << typeid(*a).name() << endl;
cout << typeid(*b).name() << endl;

或者如果你想在你的 execute() 中使用,你可以简单地使用 typeid(*this)

class BaseInterface
{
public:
virtual void execute(int a) = 0;
//debug helper
void print_info() { cout << typeid(*this).name() << endl; }
};

class ProcessN : public BaseInterface
{
void execute(int a) { print_info(); }
};

关于c++ - 如何找出哪个派生类正在处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21128562/

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