C++ 如何分配类对象数组

C++ 如何分配类对象数组,c++,arrays,C++,Arrays,我定义了一个名为HPC_user的类,如下所示: #include <iostream.h> #include <string> using std::string; class HPC_user { public: HPC_user(std::string firstName, std::string lastName, std::string login, std::string school, double activity); ~HPC_u

我定义了一个名为HPC_user的类,如下所示:

#include <iostream.h>
#include <string>

using std::string;

class HPC_user
{
  public:
    HPC_user(std::string firstName, std::string lastName, std::string login, std::string school, double activity);
    ~HPC_user();

    std::string get_first() const { return fName; }
    void set_first(std::string first) { fName = first; }

    std::string get_last() const { return lName; }
    void set_last(std::string last) { lName = last; }

    std::string get_login() const { return uId; }
    void set_login(std::string login) { uId = login; }

    std::string get_school() const { return sName; }
    void set_school(std::string school) { sName = school; }

    std::string get_activity() const {return cpuTime; }
    void set_activity(std::string activity) { cpuTime = activity; }

  private:
    std::string fName, lName, uId, sName, cpuTime;
};


HPC_user.cpp
#include "HPC_user.h"

// constructor of HPC_user                                                                                                                                                               

HPC_user::HPC_user(std::string firstName, std::string lastName, std::string login, std::string school, double activity)
{
  fName = firstName;
  lName = lastName;
  uId = login;
  sName = school;
  cpuTime = activity;

  // cout << "new HPC_user created\n";                                                                                                                                                   
}

HPC_user::~HPC_user()   // destructor 
我在编译时出错:

db2class.cpp:51:49: error: expected ';' after expression
users = new HPC_user(NULL,NULL,NULL,NULL,0.00)[size];

为对象数组分配空间的正确方法是什么?

如果您认为HPC\U用户具有合理的默认值,请在此类中添加默认构造函数:

HPC_user::HPC_user()
   : cpuTime( 0.0 )
{
}
然后,您可以构建一个500 HPC_用户的向量:

std::vector< HPC_user > users( 500 );

使用
std::vector

std::vector<HPC_user> users(size, HPC_user(NULL,NULL,NULL,NULL,0.00));

std::vector<HPC_user> users(size);
std::向量用户(大小);

Thank的可能重复,将其作为向量而不是数组的优势是什么?更安全、更易于编写、读取和维护、代码更短、异常安全、值语义可能更快,如果需要,可以增长和收缩。。。STD::向量是C++中的默认收集机制。我只会使用它来实现向量或C++14
std::dynarray
之类的东西。我可以在声明期间直接初始化成员变量,而不是类标题中的初始值设定项列表吗?private:std::string fName=“”;双活度=0.0@怀特先生:是的,如果你有一个C++11编译器,这是正确的。它在C++03中不起作用。我可以在我的HPC_用户类声明中这样做吗?HPC_用户(std::string firstName=“”,std::string lastName=“”,std::string login=“”,std::string school=“”,双重活动=0.0);对你可以,但你真的不应该这样,因为这会在呼叫端造成很多开销。我忽略了cpuTime是double,在这种情况下,它必须初始化。对于字符串,它们具有合理的默认构造函数。
std::vector<HPC_user> users(size, HPC_user(NULL,NULL,NULL,NULL,0.00));
 HPC_user() : activity(0.0) {} // strings get default constructed to ""
std::vector<HPC_user> users(size);