【发布时间】:2014-02-07 16:56:01
【问题描述】:
这可能不是很清楚。假设我有一个char *a = "reg"。现在,我想编写一个函数,在读取a 的值时,实例化一个特定类的对象并将其命名为reg。
例如,假设我有一个 class Register 和一个单独的函数 create(char *)。我想要这样的东西:
void create(char *s) //s == "reg"
{
//what goes here?
Register reg; // <- this should be the result
}
它应该是可重复使用的:
void create(char *s) //s == "second"
{
//what goes here?
Register second; // <- this should be the result
}
我希望我已经说清楚了。本质上,我想将变量中的值视为单独的变量名。这在 C/C++ 中是否可行?如果没有,有什么类似的吗?我目前的解决方案是对字符串进行哈希处理,哈希表会将相关的 Register 对象存储在该位置,但我认为这是非常不必要的。
谢谢!
【问题讨论】:
-
如果您可以将该字符串用作某种地图的键,那将会很方便。你不同意吗?
-
您不能在 C++ 中执行此操作,因为它不支持必要程度的动态性。您要解决的实际问题是什么?
-
为什么?你为什么要让除了你这个程序员以外的任何人来决定你的变量是什么调用?您选择您的 var-names,但是一旦编译代码,名称就消失了(有点)......无论如何我都看不到重点,但要回答:带有
hash、char *和 @ 的 HashTable 987654330@ 会员听起来是明智之举... -
JavaScript 是适合您的语言,但我会提醒您,这个问题听起来很像您在问如何使用螺丝刀将板切成两半的问题,而您真正需要的是第一个地方是演习。 描述您尝试使用这种疯狂技术解决的业务问题。可能有比您想到的更好的解决方案。
-
@PeterM:我不一定指类——它也可以是基本数据类型或结构。
标签: c++ string function metaprogramming