使用从向量中随机选择元素的对象调用函数

时间:2016-12-13 01:05:55

标签: c++

所以我试图做的是将一个类对象放入函数" random"。 但是,它无法更改类中变量的预分配值。为什么会这样?我正在使用Visual Studio 2013。

$ pip install dask distributed

>>> from dask.distributed import Client
>>> c = Client()  # Starts local "cluster".  Becomes the global scheduler

1 个答案:

答案 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;
}