我有使用戶選擇他想使用的數據類型,例如,如果他想使用長或雙等。 我想首先聲明變量的名稱,然後設置其類型。在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