C ++ <type>和<type * =“”> </type> </type>之间的区别是什么?

时间:2015-02-14 21:52:16

标签: c++ types casting type-conversion

使用<Type><Type *>之间有区别吗?

当我尝试这样做时

Double_node<Type> *list_head;
list_head = new Double_node <Type>(Type(), nullptr, nullptr);

我没有错误,但是当我这样做时

 Double_sentinel_list<Type *> list;
list = new Double_sentinel_list<Type>();

我得到了

错误4错误C2679:二进制&#39; =&#39; :找不到哪个操作符采用了类型为&#39; Double_sentinel_list *&#39;

的右手操作数

2 个答案:

答案 0 :(得分:1)

代码:

Double_node<Type> *list_head;

是指向对象Double_node的指针的声明。 因此,您可以使用new。

分配在堆上创建的对象

代码:

Double_sentinel_list<Type *> list;

是Double_sentinel_list类型的堆栈上的对象的声明,其中下一个类型是某种指向Type的指针列表。
因此,您无法分配在堆上创建的对象。

您需要学习c ++的基本语法以及堆栈,堆和指针之间的区别。

答案 1 :(得分:0)

简而言之,类型并不相同。

当你用新的方法调用构造函数时,它会返回一个

 Double_sentinel_list<Type>*

读取:指向Double_sentinel_list的指针,模板类型为Type。您尝试将其分配给的变量是

 Double_sentinel_list<Type*>

读取:Double_sentinel_list,模板类型指向Type。