-1
我在嘗試使用mersenne twister的隨機等級生成器。下面的代碼(它纔剛剛開始,所以也沒有多大意義):無法將uniform_int_distribution <int>轉換爲int
Generator.h:
//Level generator
#pragma once
class GameMap
{
public:
static int bgmap[256][256];
static int fg1map[256][256];
static int fg2map[256][256];
static int genposx, genposy, width, height;
static std::mt19937 twister(int);
static std::uniform_int_distribution<int> dist1(int, int);
static std::uniform_int_distribution<int> dist2(int, int);
static std::random_device rd;
void Generate(int sizex, int sizey, int seed);
GameMap();
~GameMap();
};
Generator.cpp:
//#include <SFML/Graphics.hpp>
#include <random>
#include "Generator.h"
GameMap::GameMap()
{
dist1(1, 8);
dist2(1, 248);
}
void GameMap::Generate(int sizex, int sizey, int seed = rd())
{
twister(seed);
genposx = 1;
genposy = 1;
do
{
genposx = dist2(twister);
genposy = dist2(twister);
width = dist1(twister);
height = dist1(twister);
} while (whatever);
}
的問題是,我可以將uniform_int_distrubution轉換爲int。我得到智能感知錯誤信息:
所有這些都是在這些線路上:
genposx = dist2(twister);
genposy = dist2(twister);
width = dist1(twister);
height = dist1(twister);
我在網上搜索答案失去了很多時間,但我無法找到任何東西。請幫忙。
那麼,爲什麼你會試圖到'uniform_int_distribution'轉換爲'int'?這是沒有意義的。我不相信你通過在網上搜索答案而「失去了許多小時」,因爲有許多閱讀材料正確使用「uniform_int_distribution」,並且沒有任何代碼在代碼中表示。你甚至不會爲你的函數'dist1'和'dist2'提供正確數量的參數...... –
爲什麼你的類中的所有東西都是靜態數據成員?你還沒有提供任何這些靜態成員的定義,並且由於某些奇怪的原因,當你聲明它們時,你一直在寫它們的構造函數參數的類型,所以編譯器認爲它們是成員函數聲明。這可能不是您想要聽到的答案,但您提出的錯誤表明您會從閱讀[C++書籍](https://stackoverflow.com/q/388242/241631)中受益匪淺。 – Praetorian
@Praetorian - 不,這不是我不想聽到的答案。編程實際上並不是我感興趣的第一位,而且我也沒有將大部分空閒時間花在它上面。通常當我編程時我不使用對象,因爲它是針對硬件的低級編程,所以我是新手。我要買一本書,因爲看起來我對這件事所瞭解的東西是一個廢話。無論如何,謝謝你的回覆。 – Mohrcore