我一直在嘗試編寫從文本輸入文件讀取並處理圖形的代碼。如何動態設置類型?
現在,圖表是模板類Graph<K, V>
,其中K
是節點密鑰的類型,V
是節點值的類型。
比方說,我想在輸入圖形從這種格式的文本文件:
char;int // the types
a;b;c // the keys
a;b,32;c,5 // edges starting from a
b;c,2 // edges starting from b
如何存儲類型的變量,以初始化圖形?
我願做這樣的事情:
getline(file, value, ';');
string keyTypeString = value;
getline(file, value);
string valueTypeString = value;
type keyType = ...
type valueType = ...
Graph<keyType, valueType> graph = ...
我該怎麼做,在C++?它甚至有可能嗎?
C++是一種靜態類型語言,類型被設定在編譯的時候,不能在運行時改變。所以不,你想做什麼是不可能的,你必須想出另一種解決問題的方法。 –
不,它不是。至少不是你想象的方式。模板實例化的類型是靜態的,在任何文件打開之前的很長時間內都會被編譯。 – StoryTeller
您必須使用可以存儲不同類型的對象。看一下boost :: any – Garf365