我有使用户选择他想使用的数据类型,例如,如果他想使用长或双等。 我想首先声明变量的名称,然后设置其类型。在C++中可能吗?有没有什么办法来声明变量的名称,然后类型
-2
A
回答
2
如果我明白你的问题正确,要做到这一点:
declare variable;
// in the program:
variable = (int) anotherVariable;
简短的回答:
没有
龙答:
一个void *
正是这样做的,它需要在解引用前显式转换为不同的类型。但是这对于不是void *
s的变量是不可能的。
void *variable = NULL;
int someIntVariable = 100;
int *someIntPointer = NULL;
variable = &someIntVariable;
someIntPointer = (int *)variable;
.. // but this seems unncessary.
0
考虑使用VARIANT
(如果你在Windows上)或其他平台上类似的东西。 VARIANT
的要点在于它是一个能够存储各种数据类型的联合,但在给定时间只能存储一种特定类型的数据。这样,您可以提前定义一个新的通用变量类型(VARIANT
),然后根据用户的选择在运行时调整其内部类型。但是,使用诸如VARIANT
之类的东西的代价是,因为您在其上执行的每个操作都必须检查操作对于当前基础类型是否正确。 VARIANT
也使用更多的内存,因为联合有其自己的开销(详见定义)。
您可能希望在类中包装变体操作以简化其使用。关于VARIANT
而不是void*
的好处在于,它为您提供了更多的类型安全性,并且代码变得更加可读。
编辑:作为另一个答案指出,boos::variant
是为此目的。
0
看一看boost::variant
,或者,如果您只需要POD,union
。但请记住,这使许多事情变得复杂。
0
enum VariantType {
USER_INT, USER_DOUBLE
};
union Variant {
int i;
double d;
}
int main() {
VariantType type;
Variant data;
type = getUserDataType();
switch(type) {
case USER_INT:
data.i = 42;
break;
case USER_DOUBLE:
data.d = 42.0;
break;
default:
break;
}
...或使用一些准备好的变体implmementation。
相关问题
- 1. 的Rails 3.2 - 什么是模型(型号::变量)声明的变量的名称,有没有更好的做法?
- 2. 有没有办法通过声明变量来解决poly()?
- 3. 有没有什么办法来测量android中的噪声
- 4. 有没有什么办法在类之间共享泛型类型变量?
- 5. 有什么办法来声明和增量角度JS
- 6. 有没有办法在R中声明函数参数类型?
- 7. 有没有办法来改变属性名称的JSON数据
- 8. 有没有办法从它的类之外声明一个C++保护变量?
- 9. 有没有办法获得特征的类型名称?
- 10. VB没有声明变量
- 11. LESS使用类名称声明变量?
- 12. 有没有办法在grunt任务名称中指定变量?
- 13. 有没有办法为css claas名称分配变量?
- 14. 有没有办法在对象名称中使用变量?
- 15. 有没有办法更改变量赋值名称
- 16. 有没有办法做模板声明
- 17. 有没有办法声明background-size-height?
- 18. 有没有办法定义在方法声明中两个泛型类型
- 19. Emacs Lisp - 声明具有变量/变量名称的函数
- 20. 有没有办法来声明一个类,然后在C++中的函数中初始化它?
- 21. 为什么Reads没有声明协变?
- 22. 有没有什么办法在目标C上动态地声明类?
- 23. 什么是变量声明的dart函数类型语法?
- 24. “随后的变量声明必须具有相同的类型”
- 25. 有没有什么办法让在声明的顺序从一个Java类中的私有字段名
- 26. 名称不明的变量声明
- 27. 什么是JavaScript来检查变量类型的最好办法
- 28. 有没有什么办法来检查类的属性在C#
- 29. 有没有办法改变一个局部类型的常量* *它在外部声明的例程?
- 30. 为什么可以在REPL中声明具有相同名称的变量?
如果我找到了你,那么在C++世界中是不可能的。 – varnie 2013-03-10 12:53:45
类型是编译时构造。在程序编译完成后,它们并不存在,并且在运行时无法更改。 – 2013-03-10 12:56:18
你为什么需要这样做?为什么不在用户做出选择后创建适当类型的变量?你能澄清吗? – 2013-03-10 12:56:21