需要"一个"对象,如何使用"新"

mer*_*esi -2 c++ new-operator

我写;

Element element=new Element;
Run Code Online (Sandbox Code Playgroud)

我收到了错误;

homework.cpp: In function 'int main(int, char**)':
homework.cpp:227:29: error: conversion from 'Element*' to non-scalar type 'Element' requested

*** 1 errors, 0 warnings
Run Code Online (Sandbox Code Playgroud)

我不想要指针或元素数组,

我应该写一下Element *element= new Element;.有人解释一下吗?

编辑:

元素类:

class Element{
  public:
      Element():exists(false){};

      std::string name;
      std::string full_path_name;
      ElementType element_type;
      long element_size;
      bool exists;

  };
Run Code Online (Sandbox Code Playgroud)

Set*_*gie 7

如果你想分配一个动态对象,那就是

Element* element = new Element;
Run Code Online (Sandbox Code Playgroud)

因为new返回指向免费商店中对象的指针.delete element完成使用对象以防止内存泄漏时,必须调用.如果您想避免手动管理内存,可以使用std::unique_ptr:

std::unique_ptr<Element> element = new Element;
Run Code Online (Sandbox Code Playgroud)

并且element将调用delete时自动超出范围上的指针.但是,您确定不想只创建一个自动对象吗?

Element element;
Run Code Online (Sandbox Code Playgroud)

这会在自动存储中创建对象,您不必手动解除分配使用智能指针,而且速度要快得多; 这是最好的方式.(但请确保您不执行Element element();哪个是函数的原型,而不是变量声明.)