【问题标题】:C++ What's the difference between <Type> and <Type *>C++ <Type> 和 <Type *> 有什么区别
【发布时间】:2015-04-15 17:47:39
【问题描述】:

使用&lt;Type&gt;&lt;Type *&gt; 有区别吗?

当我尝试这样做时

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:二进制“=”:未找到采用“Double_sentinel_list *”类型的右侧操作数的运算符

【问题讨论】:

  • 释义:指针和指针有区别吗?

标签: c++ types casting type-conversion


【解决方案1】:

代码:

Double_node<Type> *list_head;

是指向对象 Double_node 的指针的声明。 因此,您可以使用 new 分配在堆上创建的对象。

代码:

Double_sentinel_list<Type *> list;

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

你需要学习c++的基本语法以及栈、堆和什么是指针的区别。

【讨论】:

    【解决方案2】:

    总之,类型不相等。

    当你用 new 调用构造函数时,它会返回一个

     Double_sentinel_list<Type>*
    

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

     Double_sentinel_list<Type*>
    

    阅读:带有指向 Type 的模板类型指针的 Double_sentinel_list。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 2015-07-17
      • 2011-02-06
      • 2017-09-14
      • 2020-11-14
      • 1970-01-01
      相关资源
      最近更新 更多