向vector添加新对象,每次都返回相同的地址

Dee*_*kor 0 c++

我有代码:

我的矢量: std::vector<spreadsheet> spreadsheets;

//create a new spreadsheet if it doesn't already exist. Link the session to the spreadsheet.
bool server::createSpreadsheet(session* session, std::string name, std::string password)
{
    std::cout << "beginning" << std::endl;

    bool found = false;
    for(int i = 0; i < spreadsheets.size(); i++)
    {

      spreadsheet test = spreadsheets.at(i);
      std::cout << "spreadsheet name = " << &test << std::endl;
      if(spreadsheets.at(i).name == name) //spread sheet already exists
      {
          found = true;

      }
    }
    std::cout << "After For found = " << found << std::endl;

    if(!found) //create a spreadsheet
    {
      spreadsheet * spr = new spreadsheet(name, password);
      spr->linkSession(session);
      spreadsheets.push_back(*spr);
    }
    else
    {
      std::cout << "in else" << std::endl;
      return false;
    }
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我希望这将创建一个新的电子表格对象每次foundfalse,并将其放置在载体中.但根据输出我得到它似乎每次都放置相同的对象?我迷失在这里发生了什么?

运行几次后输出:

beginning
spreadsheet name = 0x7fff568bce10
spreadsheet name = 0x7fff568bce10
spreadsheet name = 0x7fff568bce10
spreadsheet name = 0x7fff568bce10
spreadsheet name = 0x7fff568bce10
spreadsheet name = 0x7fff568bce10
spreadsheet name = 0x7fff568bce10
spreadsheet name = 0x7fff568bce10
spreadsheet name = 0x7fff568bce10
Run Code Online (Sandbox Code Playgroud)

Pal*_*alo 5

您将电子表格复制到本地变量.然后输出局部变量的地址.

如果要在向量中输出电子表格的地址,可以执行以下操作:

std :: cout <<"spreadsheet name ="<<&spreadsheets [i] << std :: endl;