所以我试图做的是将一个类对象放入函数" random"。 但是,它无法更改类中变量的预分配值。为什么会这样?我正在使用Visual Studio 2013。
$ pip install dask distributed
>>> from dask.distributed import Client
>>> c = Client() # Starts local "cluster". Becomes the global scheduler
答案 0 :(得分:1)
但是,它无法改变类中变量的预分配值。
声明参数obj
按值传递,这意味着函数内部对它的任何修改都与传入的参数无关。
您可以将其更改为传递参考:
void random(human& obj)
您的代码中存在内存泄漏。 human
类型的2个对象最后是new
但不是delete
。更好的方法可能是:
vector<human> humanlist;
humanlist.push_back(human{});
humanlist.push_back(human{});
random(humanlist[0]);
random(humanlist[1]);
vector<human>::iterator it;
for (it = humanlist.begin(); it != humanlist.end(); it++)
{
it->info();
}
cout << endl;
或更简洁:
vector<human> humanlist(2); // construct a vector with 2 default-constructed elements
random(humanlist[0]);
random(humanlist[1]);
for (const auto& h : humanlist)
{
h.info();
}
cout << endl;
注意info()
需要(应该)声明为上面代码的const成员函数。它不会修改类的成员。
void info() const
{
cout << "NAME: " << name << endl;
cout << "RACE: " << race << endl;
cout << "GENDER: " << gender << endl;
cout << "AGE: " << age << endl << endl;
}