C++ 如果包括cstdlib没有';不要让我用rand()?

C++ 如果包括cstdlib没有';不要让我用rand()?,c++,random,C++,Random,因此,我试图使用cstdlib和rand()复制一个简单的掷骰子,但是visual studio代码似乎与rand有问题,声称它没有定义,尽管我已经包含了cstdlib,有什么想法吗 我会把代码粘贴起来,就像atm机一样,也许有人能弄明白?仅供参考,我正在PopOS 20.10上使用Visual Studio代码(不确定是否相关) #包括 #包括 #包括 职业选手 { 公众: std::字符串名; 国际卫生组织; int-strength=1+(标准::兰德()%12); 智力防御; int倡议

因此,我试图使用cstdlib和rand()复制一个简单的掷骰子,但是visual studio代码似乎与rand有问题,声称它没有定义,尽管我已经包含了cstdlib,有什么想法吗

我会把代码粘贴起来,就像atm机一样,也许有人能弄明白?仅供参考,我正在PopOS 20.10上使用Visual Studio代码(不确定是否相关)

#包括
#包括
#包括
职业选手
{
公众:
std::字符串名;
国际卫生组织;
int-strength=1+(标准::兰德()%12);
智力防御;
int倡议;
运气;
void levelup();
无效赢();
无效丢失();
私人:
};
它抛出的错误是:
命名空间“std”没有成员“rand”C/C++(135)

,因此问题在于/usr/include/C++/10/tr1/cstdlib中的文件内容没有使用rand、srand等

在/usr/include/c++/10/cstdlib中有一个不错的副本,其中提到了兰德和斯兰德

我可能必须将所有文件从/include复制到/include/tr1,因为VSC似乎正在查看这些文件,否则我必须尝试编辑我的include路径,不要排除tr1


现在,我刚刚将/usr/include/c++/10/cstdlib复制到/usr/include/c++/10/tr1/cstdlib,重新启动VSC和viola,工作正常。

。你应该包括你看到的完整的错误消息,它可能给出一个线索,关于真正发生的事情。不确定它,但是C定义了<代码> RAND 。而C++定义了<代码>:ST::RAND 。使用
rand
以及
使用名称空间std可能会混淆一个不太聪明的编译器。如果我成功:int-strength=1+(std::rand()%6);然后它告诉我:命名空间“std”没有成员“rand”C/C++(135)。事实上,如果我去掉使用名称空间,字符串名称会引发一个问题,所以我添加了std::string,这很好。然而std::rand()仍然有一个问题首先,然后尝试@Serge Ballesta所写的方法。很高兴您已经对它进行了排序,但是复制系统头文件听起来像是解决未来问题的方法。您应该编辑编译器配置,使其看起来位于正确的位置。同意。不知道为什么它一开始就不在那里。我看看能不能弄明白。谢谢你的支持!
#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:   

    };