我有一个c ++程序,其中我:
void (*foo)和void (*bar)namespace1包含功能void foo()和void bar()namespace2还包含功能void foo()和void bar()在运行时,我希望用户能够传递一个变量,比如说choice,它表示所选的命名空间.然后,类中的函数将映射到相应命名空间中的相应函数.
目前,我正在使用以下内容:
if (choice == "namespace1") {
my_class.foo = &(namespace1::foo);
my_class.bar = &(namespace1::bar);
} else if (choice == "namespace2") {
my_class.foo = &(namespace2::foo);
my_class.bar = &(namespace2::bar);
}
Run Code Online (Sandbox Code Playgroud)
这很好用,但是当我的可用命名空间列表增加并且每个命名空间提供了我希望传递给类的9个函数时,它变得相当麻烦.
有什么办法可以整理一下吗?我的第一个想法是:
if (choice == "namespace1") {
my_namespace = namespace1;
} else if (choice == "namespace2") {
my_namespace = namespace2;
}
my_class.foo = &(my_namespace::foo);
my_class.bar = &(my_namespace::bar);
Run Code Online (Sandbox Code Playgroud)
但是,如果我理解正确,我不能使用名称空间作为变量. …