Сделать экземпляр класса на существующей переменной - PullRequest
0 голосов
/ 08 марта 2020

Как я могу создать экземпляр c ++ для существующей переменной Это мой заголовок:

#ifndef PERSON_H_
#define  PERSON_H_
class Person{
private:
  std::string name = "default";
public:
 void setName(std::string name);
 }
 #endif

Это моя личность. cpp

#include "person.h";
void setName(std::string name){
    this->name=name;
  }

И мой основной файл cpp

 #include <iostream>
 int main(){
 Person p;
 p.setName("Jack");
 //so person now have name Jack.
 //here is my problem
 p=new Person;
 //get error.So how i can on variable p make new instance of Person for return all to default values
 return 0;
 }

Ответы [ 3 ]

0 голосов
/ 08 марта 2020

new дает вам указатель на новый экземпляр Person. HolyBlackCat указал, что вы не используете указатель здесь. Поэтому используйте либо p = Person(), либо go с указателями с самого начала, начиная с Person *p = new Person(). Однако в этом случае я действительно не вижу необходимости в указателях.

0 голосов
/ 08 марта 2020

человек * р = новый человек (); Если вы хотите создать новый экземпляр, используйте указатель типа Person, который будет указывать на адрес памяти, выделенный новым оператором. Делайте любую операцию, которую хотите выполнить. Поскольку вы используете new, обязательно используйте оператор delete для предотвращения утечки памяти. Delete p; delete в основном удалит значение по адресу, указанному p, и назначит ему nullptr, чтобы он не стал висящим указателем. Опять же, если вы хотите назначить новый экземпляр, вы можете использовать новый оператор. Теперь p будет указывать на другую область памяти, которая является адресом нового объекта.

- Person *p = new Person(); //perform operations delete p; p = new Person();

0 голосов
/ 08 марта 2020

p = Person();. В большинстве случаев p = {}; также будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...