Объявление объекта случайного класса в определении класса - PullRequest
0 голосов
/ 18 сентября 2018

Итак, я пишу класс, в котором мне нужно генерировать случайные числа, выбранные из равномерного распределения.Поскольку мне нужно часто генерировать случайные числа, я хочу создать объект внутри определения класса.

Вот пример того, что я пытаюсь выполнить."example.h"

class ABC
{
  public:
   ABC();
   /* code goes here */
  private:
   std::mt19937 mt(std::random_device rd;);
   std::uniform_int_distribution<int> dist;
}

"example.cpp"

ABC::ABC():ABC::dist(0,12)
{
  /* ABC class constructor */
}

Приведенный выше код не компилируется.Может кто-нибудь помочь или указать на ошибку.Заранее спасибо.Следующие ошибки генерируются компилятором g ++.

src/tsim.cpp: In constructor ‘TrafficSim::TrafficSim(bool, float)’:
src/tsim.cpp:5:71: error: expected class-name before ‘(’ token
 TrafficSim::TrafficSim(bool render,float time_period):TrafficSim::dist(0,110)
                                                                       ^
src/tsim.cpp:5:71: error: expected ‘{’ before ‘(’ token
src/tsim.cpp: At global scope:
src/tsim.cpp:5:72: error: expected unqualified-id before numeric constant
 TrafficSim::TrafficSim(bool render,float time_period):TrafficSim::dist(0,110)
                                                                        ^
src/tsim.cpp:5:72: error: expected ‘)’ before numeric constant

1 Ответ

0 голосов
/ 18 сентября 2018

Вы неправильно определили свой конструктор.

Чтобы определить список инициализатора элемента, вам нужно определить его как

ABC::ABC() : dist(0, 12)
{
  /* ABC class constructor */
}

Список инициализатора элемента работает сразу послеПодпись сигнатуры функции: memberName (операнды конструктора) Если вы хотите инициализировать несколько членов, вы просто разделяете их запятыми.

...