使用<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;
的右手操作数答案 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。