如何随机初始化常量数据成员?

时间:2016-04-10 06:13:55

标签: c++ random initialization

接口

class FireSimulator
{
    Landscape **forest;
    Weather w;
    static int statistics;
    const int x;
    const int y;

public:
    FireSimulator();
    FireSimulator(Weather&, int, int);

   void setBoundary();
   void Print();
};

实施

FireSimulator::FireSimulator() : w(),x(0),y(0)
{}

FireSimulator::FireSimulator(Weather& W, int X, int Y): w(W), x(X),y(Y)
{
    forest=new Landscape *[x];
    for(int i=0; i<x; i++)
    {
        forest[i]=new Landscape[y];
    }
}

void FireSimulator::setBoundary()
{}

void FireSimulator::Print()
{}

int FireSimulator::statistics=0;

这会动态设置类型格局的林。

如何使用随机化来传播森林周围的树木?

如何在构造函数中随机初始化x和y,它们是常量数据成员?

1 个答案:

答案 0 :(得分:2)

如果函数randomInt()返回一个随机整数,则可以将常量成员初始化为其返回值:

FireSimulator::FireSimulator()
     : w()
     , x(randomInt())
     , y(randomInt())
{}

对于非加密随机性,如果使用rand()播种,则C标准库srand()函数可能足够适合您的情况。这两个功能可从#include <cstdlib>获得。在C ++ 11中,还在<random>中提供了自己的随机生成方法(参见this question)。