【发布时间】:2018-07-01 22:34:52
【问题描述】:
我的任务是创建一个 Stack 类模板,以便它可以用于其他数据类型,例如 int、double、string 等。我坚持的是在之前声明无类型 Stack 对象用正确的类型实例化它。也许是因为我搜索错误,但我找不到任何可以转换的基类。
//in the main method
//get user input, which will be "int", "string", "double", etc.
string type;
cin >> type;
MyStack<???> stack1;
if(type == "int")
//convert stack1 to MyStack<int>
else //same thing for other data types
【问题讨论】:
-
模板类型参数是静态解析的。您不能让它是开放式的并依赖于运行时值。如果您的类型集有限,您可以分支到使用正确类型的不同函数。
-
@StoryTeller 那么我可以通过将默认模板类型设置为 int 在运行时将其转换为不同的模板类型吗?
-
不,演员表的类型也是静态确定的。 C++ 是一种静态类型语言。当你假装它拥有
std::string时,为什么你认为一堆int会正确运行? -
我不清楚您的分配如何暗示您需要使上述代码正常工作。
-
@StoryTeller 哈哈,我只是希望出于绝望和懒惰。然后我猜我应该使用你建议的方法。但我不是很明白,你能详细说明一下吗?
标签: c++ class templates casting stack