我的任务是创建一个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
答案 0 :(得分:4)
你做不到。但是你可以解决潜在的问题。在c++14使用延续传递样式:
//in the main method
//get user input, which will be "int", "string", "double", etc.
std::string type;
std::cin >> type;
[&](auto&&next){
if(type == "int")
return next(MyStack<int>{});
else if (type=="string")
return next(MyStack<std::string>{});
else if (type=="double")
return next(MyStack<double>{});
else
throw std::invalid_argument(type);
}([&](auto&& stack1){
// Here stack1 is the correct type
});
这可能不是你的导师要求你做的。