我一直在尝试编写从文本输入文件读取并处理图形的代码。如何动态设置类型?
现在,图表是模板类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