![](/img/trans.png)
[英]Function returning <error-type> instead of the intended raw pointer to a template class in C++
[英]Template in C++ with raw type
在Java中,我们可以执行以下操作:
ArrayList arrayList = new ArrayList<String>();
// Notice that String is not mentioned in the first declaration of array
相反
ArrayList<String> arrayList = new ArrayList<String>();
我们如何在C ++中进行类似的处理?
并非完全按照您编写的方式进行。
根据实际要完成的操作,您可以执行以下操作之一:
auto
自动适应以下类型: auto = new ArrayList<String>();
。 这不会给您多态性,但是可以节省您在左侧键入类型名的时间。 这是第二种方法的示例:
class IArrayList // define a pure virtual ArrayList interface
{
// put your interface pure virtual method declarations here
};
template <typename T>
class ArrayList : public IArrayList
{
// put your concrete implementation here
};
然后,您可以在代码中说:
IArrayList* arrayList1 = new ArrayList<string>();
IArrayList* arrayList2 = new ArrayList<double>();
...等等。
在c ++中,不能使用vector array = new vector<string>()
,但是在c ++ 11中,可以使用auto
关键字: auto p = new vector<string>()
,它与vector<string> *p = new vector<string>()
相同vector<string> *p = new vector<string>()
希望我的回答可以对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.