2014-10-22 84 views
-3

我已經在我的程序中聲明瞭一個簡單的結構體。當我在主程序中根據該結構創建變量時,我想根據已存儲在變量中的名稱對其進行命名。C++我可以使用變量值聲明一個Struct作爲Struct名稱嗎?

這可能嗎?

例如我的結構聲明如下:後來在我的計劃

struct myGreatStruct{ 
int foo; 
int fum; 
} 

然後,用戶輸入這些被存儲在一個名爲someVariable

最後我需要使用變量值命名變量的名字我struct:

myGreatStruct someVariable; 
+1

您是否嘗試過? – 2014-10-22 06:48:06

+2

那麼,你想使用運行時數據(用戶輸入)來命名你的變量?變量名是一個編譯時構造,在編譯過程中消失,所以不,這是不可能的。也許你想使用'std :: map'? – 2014-10-22 06:49:35

回答

3

使用關聯容器eg std::unordered_map

例子:

#include <iostream> 
#include <unordered_map> 

int main(int argc, char *argv[]){ 
    std::unordered_map<std::string, myGreatStruct> vars; 
    std::string var_name; 

    std::cout << "Input var name" << std::endl; 
    std::cin >> var_name; 

    vars[var_name].foo = 1; // using the name that the user gave 
} 
相關問題