在类定义中声明一个随机类的对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在类定义中声明一个随机类的对象相关的知识,希望对你有一定的参考价值。

所以,我正在编写一个类,我需要生成从均匀分布中采样的随机数。由于我需要经常生成随机数,我想在类定义中创建一个对象。

这是我想要完成的例子。 “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
答案

您错误地定义了构造函数。

为了定义成员初始化列表,您需要将其定义为

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

成员初始化列表直接在函数签名后执行:memberName(构造函数操作数)如果要初始化多个成员,只需用逗号分隔它们即可。

以上是关于在类定义中声明一个随机类的对象的主要内容,如果未能解决你的问题,请参考以下文章

java 面向对象:类结构 属性

第四章总结

static, const

关于“只有静态常量整型数据成员才可以在类中初始化”

java中什么是实例变量

枚举类和注解