每次调用函数时C++新对象?

Dhi*_*ães 0 c++ instance

我想要的是一个函数,每次调用它时都会生成一个新的不同实例(使用不同的名称......)

像这样:

void person::new_person(){
  person *(id+index) = new person(name_temp, age_temp, quote_temp);
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用......我不知道我该怎么做...(索引是每次我创建一个新实例时加一个).我意识到每次我制作指针并在其上添加空格,就像这样:

int*p;
*(p+1) = 5;
Run Code Online (Sandbox Code Playgroud)

它编译,但在运行时冻结(我把它得到的记忆不允许),所以"人*(id +索引)"也可能不起作用.你怎么看?

Rob*_*obᵩ 8

尝试将persons 保存在标准容器中:

std::vector<person> people;
void person::new_person(std::string name, int age, std::string quote){
      people.push_back(person(name, age, quote));
}
Run Code Online (Sandbox Code Playgroud)

  • @Robᵩ无论如何你要复制`name`,所以你应该把它作为一个值参数然后做`people.emplace_back(std :: move(name),age,std :: move(quote));`. (3认同)
  • @kbok - 我认为这样做会对OP的计划做出太多令人困惑的假设. (2认同)

Sta*_*ked 5

你的意思是这样的?

#include <string>

person make_person()
{
    static unsigned i = 0;
    return person(std::to_string(i++));
}
Run Code Online (Sandbox Code Playgroud)