gpt4 book ai didi

C++使随机引擎静态

转载 作者:行者123 更新时间:2023-11-28 01:54:58 25 4
gpt4 key购买 nike

我正在尝试为我的随机助手类制作随机引擎:

它在我使用这段代码时有效:

Helper.h

#pragma once
class Helper
{
public:
static int getRandomInt(int min, int max);
static double getRandomDouble(double min, double max);
};

Helper.cpp

#include <random>
int Helper::getRandomInt(int min, int max)
{
static std::default_random_engine randomEngine{};
using Dist = std::uniform_int_distribution<int>;
static Dist uid{};
return uid(randomEngine, Dist::param_type{ min,max});
}

double Helper::getRandomDouble(double min, double max)
{
static std::default_random_engine randomEngine{};
using Dist = std::uniform_real_distribution<double>;
static Dist uid{};
return uid(randomEngine, Dist::param_type{ min,max });
}

所以我想为什么不使用相同的随机引擎并尝试:

Helper.h 添加:

static std::default_random_engine randomEngine;

helper.cpp 改变了:

//added randomEngine
std::default_random_engine Helper::randomEngine = std::default_random_engine{};

int Helper::getRandomInt(int min, int max)
{
//removed randomeEngine
using Dist = std::uniform_int_distribution<int>;
static Dist uid{};
return uid(randomEngine, Dist::param_type{ min,max});
}

double Helper::getRandomDouble(double min, double max)
{
//removed randomeEngine
using Dist = std::uniform_real_distribution<double>;
static Dist uid{};
return uid(randomEngine, Dist::param_type{ min,max });
}

当我尝试运行它时出现 10 个错误:

default_random_engine': 不是'std'的成员

缺少类型说明符 - 假定为 int

当我添加一个 static int(只是为了测试)时:

Helper.h

static int test;

Helper.cpp

int Helper::test = 3;

没有编译错误,创建静态随机引擎和静态整数有什么区别?

注意:第一个例子是有效的,我已经包含了(否则第一个例子将不起作用)

最佳答案

错误表明您忘记包含 <random> Helper.h 中的标题.

改变 Helper.h到:

#pragma once
#include <random>

class Helper
{
static std::default_random_engine randomEngine;

public:
Helper();
~Helper();
static int getRandomInt(int min, int max);
static double getRandomDouble(double min, double max);
};

...应该可以解决您的问题。

关于C++使随机引擎静态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41551532/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com