qrand 未在此范围内声明

Posted

技术标签:

【中文标题】qrand 未在此范围内声明【英文标题】:qrand was not declared on this scope 【发布时间】:2021-11-08 10:14:48 【问题描述】:

我在玩游戏时遇到了错误 - “Snake”。 伪随机数字生成器不工作。 它说“使用未声明的标识符 qrand”或“未在此范围内声明 qrand” 也许我使用了错误的 QT 版本 - 5.0.2

#include<QEvent>
#include <QGraphicsScene>
#include <QKeyEvent>
#include <QMessageBox>
#include <QAction>
#include <iostream>

#include "gamecontroller.h"
#include "food.h"
#include "snake.h"
#include "mainwindow.h"

void GameController::addNewFood()

    int x, y;

    do 
        x = (int)(qrand() % 200) / 10 - 10;       //using undeclared identifier qrand
        y = (int)(qrand() % 200) / 10 - 10;       //using undeclared identifier qrand
        x *= 10;
        y *= 10;
     while (snake->shape().contains(snake->mapFromScene(QPointF(x + 5, y + 5))));

    Food *food = new Food(x, y);
    scene.addItem(food);

【问题讨论】:

C++ 有some very good PRNG functionality in the standard library。例如,要生成一个范围内的整数,您可以使用std::uniform_int_distribution 【参考方案1】:

也许该功能已被弃用(根据:https://doc.qt.io/qt-5/qtglobal-obsolete.html#qrand)。改用这个:https://doc.qt.io/qt-5/qrandomgenerator.html

编辑:也尝试添加#include &lt;QtGlobal&gt;。这可能会有所帮助。

【讨论】:

以上是关于qrand 未在此范围内声明的主要内容,如果未能解决你的问题,请参考以下文章

未在此范围内声明 CvSVM 错误

C++ 错误:未在此范围内声明类/对象

C++ Win API 函数'未在此范围内声明'

我正在更换未在此范围内声明

数据“未在此范围内声明的成员”

Arduino:错误:“abs”未在此范围内声明