C++ 通过菜单向下传递异常类型

C++ 通过菜单向下传递异常类型,c++,exception,exception-handling,C++,Exception,Exception Handling,所以我遇到了这个问题,我似乎无法解决它 基本上我有一个测试菜单,它可以是任意深度的,它只是一种组织测试的方法,在最低级别有特定的测试用例 目前看来一切都正常,不过我想实现一个系统,在这个系统中,您可以指定一个异常类型,并根据是否抛出异常进行操作。更复杂的是,由于我们使用的一些宏,catch块只接受类型,而不接受实例(我相信普通catch可以,已经有一段时间了) 下面是一些现在的代码: 添加测试: Menu* mainmenu = new Menu("MainMenu"); Menu* sub1

所以我遇到了这个问题,我似乎无法解决它

基本上我有一个测试菜单,它可以是任意深度的,它只是一种组织测试的方法,在最低级别有特定的测试用例

目前看来一切都正常,不过我想实现一个系统,在这个系统中,您可以指定一个异常类型,并根据是否抛出异常进行操作。更复杂的是,由于我们使用的一些宏,catch块只接受类型,而不接受实例(我相信普通catch可以,已经有一段时间了)

下面是一些现在的代码:

添加测试:

Menu* mainmenu = new Menu("MainMenu");
Menu* sub1 = mainmenu->add("Sub1", functionptr);
sub1->add("Test1", "Script_to_Drive_Test");
sub1->add("Test2", "Script_to_Drive_Test");
sub1->add("Test3", "Script_to_Drive_Test");
我希望能够指定如下异常:

....
sub1->add<SOME::EXCEPTION1>("Test1", "Script_to_Drive_Test");
sub1->add<SOME::EXCEPTION2>("Test2", "Script_to_Drive_Test");
sub1->add<SOME::EXCEPTION3>("Test3", "Script_to_Drive_Test");
。。。。
sub1->添加(“Test1”,“脚本到驱动器测试”);
sub1->添加(“Test2”,“脚本到驱动器测试”);
sub1->添加(“Test3”,“脚本到驱动器测试”);
问题是有多个异常需要测试,我相信这会创建不同的类型。当前,当调用add时,所有内容都干净地存储在一个向量中,但是使用的模板已经不可能了(即使我也要对向量类型进行模板化,在创建第一个异常后它也不会工作,因为Test2和Test3属于不同的类型,对吗?)。事实上,有大量不同的异常需要测试

因此,我面临的核心问题是能够将这些异常类型放入我的菜单中。完全重写并不是不可能的(这是一个相对较小的系统),但是我真的不愿意


如有任何见解/帮助或问题,将不胜感激。我非常乐意澄清任何事情。

我不确定我是否理解你的问题

然而,据我所知,您的问题是,现在
add
根据指定的异常类型创建一个对象,而您不能将其存储在internal
vector
中。您可以尝试使用公共基类。使
向量
存储指向非模板基类的指针,而每个
添加
将创建派生模板类的对象(模板取决于传递给
添加
的异常类型)


一般来说,以前对存储在
vector
中的对象执行的所有操作现在都将是派生模板类中实现的基类上的虚拟函数。

谢谢,我一开始确实尝试过,并误认为它不起作用。在你的帖子发布后,我又试了一次,得到了它——模板非常容易让我迷惑。