【发布时间】:2020-11-26 11:06:14
【问题描述】:
所以,我正在尝试使用 cstdlib 和 rand() 复制一个简单的掷骰子,但是 Visual Studio 代码似乎对 rand 有问题,声称它没有定义,尽管我已经包含了 cstdlib,有什么想法吗?
我会粘贴代码,就像 atm 一样简单,也许有人可以弄清楚?仅供参考,我在 PopOS 20.10 上使用 Visual Studio Code(不确定是否相关)
#include <iostream>
#include <cstdlib>
#include <random>
class player
{
public:
std::string name;
int health;
int strength = 1 + (std::rand() % 12);
int defense;
int initiative;
int luck;
void levelup();
void win();
void lose();
private:
};
它抛出的错误是: 命名空间“std”没有成员“rand”C/C++(135)
【问题讨论】:
-
Works for me。您应该包含您看到的完整错误消息,它可能会为真正发生的事情提供线索。
-
不确定,但 C 定义了
rand,而 C++ 定义了std::rand。将rand与using namespace std;一起使用可能会使不太聪明的编译器感到困惑。 -
如果我做到了:int strength = 1 + (std::rand() % 6);然后它给了我:命名空间“std”没有成员“rand”C/C++(135)。实际上,如果我使用命名空间取出,字符串名称会引发问题,所以我添加了 std::string,它很好。然而 std::rand() 仍然有问题
-
先Why is “using namespace std;” considered bad practice? 然后试试@Serge Ballesta 写的东西