C++;11给定输入,初始化要在if语句外部使用的模板 我正在做一个C++任务,我们必须使用C++ 11。第一行输入是“数字”或“字符串”,用于初始化我编写的模板。我可以使用if语句来检查使用的是哪个词,现在我有: if (next.compare("NUMBERS")) { LinkedList<int>* list = new LinkedList(); } else if (next.compare("STRINGS")) { LinkedList<string>* list = new LinkedList(); } if(下一步,比较(“数字”)){ LinkedList*列表=新建LinkedList(); }else if(next.compare(“字符串”)){ LinkedList*列表=新建LinkedList(); }

C++;11给定输入,初始化要在if语句外部使用的模板 我正在做一个C++任务,我们必须使用C++ 11。第一行输入是“数字”或“字符串”,用于初始化我编写的模板。我可以使用if语句来检查使用的是哪个词,现在我有: if (next.compare("NUMBERS")) { LinkedList<int>* list = new LinkedList(); } else if (next.compare("STRINGS")) { LinkedList<string>* list = new LinkedList(); } if(下一步,比较(“数字”)){ LinkedList*列表=新建LinkedList(); }else if(next.compare(“字符串”)){ LinkedList*列表=新建LinkedList(); },c++,c++11,templates,C++,C++11,Templates,当然,这样做的问题是我不能使用if语句之外的列表。我需要在if语句之外使用列表,但我不知道如何在if语句之外声明它,而不填写模板值。我试着查找是否可以创建一个模板,稍后再进行转换,但在我继续研究之前,我想知道是否有更好的解决方案 作业要求我自己编写LinkedList类,因此我不需要使用已为我创建的LinkedList的解决方案或带有向量的解决方案,因为这会破坏作业的目的。我必须使用自己的模板。您的代码结构将根据创建后对列表所做的操作而改变,您可能需要在if语句之外创建一个指向两个列表的指针,然

当然,这样做的问题是我不能使用if语句之外的列表。我需要在if语句之外使用列表,但我不知道如何在if语句之外声明它,而不填写模板值。我试着查找是否可以创建一个模板,稍后再进行转换,但在我继续研究之前,我想知道是否有更好的解决方案


作业要求我自己编写
LinkedList
类,因此我不需要使用已为我创建的
LinkedList
的解决方案或带有向量的解决方案,因为这会破坏作业的目的。我必须使用自己的模板。

您的代码结构将根据创建后对列表所做的操作而改变,您可能需要在if语句之外创建一个指向两个列表的指针,然后根据实例化的列表选择要使用的列表

LinkedList<int>*    intList     = new LinkedList<int>();
LinkedList<string>* stringList  = new LinkedList<string>();

if(next.compare("NUMBERS)){
    LinkedList<int>*    intList     = new LinkedList<int>();
} else if (next.compare("STRINGS")){
    LinkedList<string>* stringList  = new LinkedList<string>();
}

//do something with either list
LinkedList*intList=new LinkedList();
LinkedList*stringList=新建LinkedList();
如果(下一步,比较(“数字)){
LinkedList*intList=新建LinkedList();
}else if(next.compare(“字符串”)){
LinkedList*stringList=新建LinkedList();
}
//对其中一个列表做些什么

LinkedList
?或
boost::variant
,如果您必须使用C++11,但您可以使用第三方库。在不了解有关赋值的更多信息的情况下,可能是定义接口的抽象基列表类,然后使用指向该基列表类的指针?还有其他可能的解决方法,包括更深入的d更多地使用模板。或者你可以总是使用
std::string
,如果是
数字,就把它们转换成int。这和已经在做的事情没有什么不同。使用指针会让事情变得更糟。