我写;
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)
如果你想分配一个动态对象,那就是
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();哪个是函数的原型,而不是变量声明.)