小编Kar*_*ard的帖子

在c ++中声明在运行时对命名空间的引用

我有一个c ++程序,其中我:

  1. 有一个类,其中包含作为成员的函数句柄,说void (*foo)void (*bar)
  2. 拥有一组名称空间,每个名称空间定义相同名称的函数,例如:
    • 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)

但是,如果我理解正确,我不能使用名称空间作为变量. …

c++ namespaces

0
推荐指数
1
解决办法
253
查看次数

标签 统计

c++ ×1

namespaces ×1