【发布时间】:2015-04-06 15:52:37
【问题描述】:
有一个伪代码:
s = input()
if s == 'int':
func<int>(...)
if s == 'char':
func<char>(...)
and there're more if blocks
我如何编写可以在没有任何if 的情况下执行此操作的代码。如下代码:
s = input()
func<s>(...) #auto detect type in s
我需要 C++ 中的解决方案。
【问题讨论】:
-
你所问的实际上是不可能的。你可以encode什么类型不是类型本身,但计算机不是魔法。
-
当然可以。通过使用工厂模式,他可以接受一个字符串,该字符串返回一个使用类模板共享的公共接口的对象。在这种情况下,它甚至可能不需要它,因为它似乎只调用一个函数,而实际的模板类型可以由工厂处理。
-
@swalog 但这并没有删除 if,它只是将它移到别处......
-
当然@Alegnem,但我认为这仍然符合 OP 的精神。
-
@swalog 可能。带有字符串 -> 函数映射的映射也可以提供帮助。
标签: c++ type-conversion abstract-data-type custom-data-type