我对C++
还不熟悉。
我正在制作tic tac toe
游戏,我需要一个随机发生器来决定哪个玩家先行。
但是在初始化变量时我遇到了一些错误。
这是代码
#pragma once
#include <string>
#include <random>
#include <ctime>
#include "Board.h"
#include "Player.h"
class manager
{
public:
manager();
void gameEntrance();
void playGame();
void askMove();
void diceRoll();
void winChekcer();
void endGameChecker();
private:
default_random_engine _randomGenerator(time(0)); //here i got "Error: functio "time" is not a type name
uniform_real_distribution<float> _diceRoll(0.0f, 1.0f); //here i got "Error: expected a type specifier
bool _endGame = false;
string _turn;
Board _board;
Player _player1;
Player _player2;
};
所以我做错了什么。请赐教。谢谢你们。
答案 0 :(得分:1)
应在构造函数
的定义中在构造函数中初始化实例成员字段manager::manager()
: _randomGenerator(time(0)), _diceRoll(0.0f, 1.0f), endGame(false)
{}
这将放在您的manager.cc
实施文件中,而不是manager.h
头文件中。
答案 1 :(得分:1)
使用构造函数初始化变量:
manager::manager()
: _randomGenerator(time(0)), _diceRoll(0.0f, 1.0f)
{}
完全构造的或=
default_random_engine _randomGenerator = default_random_engine(time(0));
uniform_real_distribution<float> _diceRoll = uniform_real_distribution<float>(0.0f, 1.0f);
带有初始化列表的或=
:
default_random_engine _randomGenerator = { time(0) };
uniform_real_distribution<float> _diceRoll = { 0.0f, 1.0f };
最后一个未经测试,= time(0)
可能也有效,可能依赖于可能的转换运算符
您的直接构造函数调用default_random_engine _randomGenerator(time(0));
只能用于static / const变量。
答案 2 :(得分:0)
如果您使用的是C ++ 11,请执行
uniform_real_distribution<float> _diceRoll{0.0f, 1.0f};
当您编写default_random_engine _randomGenerator(***);
时,编译器正在考虑您定义一个名为randomGenerator
的函数,该函数返回default_random_engine
,并在time(0)
处等待类型