c++ - 在继承类中使用 srand time null 获取相同的值
问题描述
我正在尝试修改我在课堂上学到的东西,并用“学生”类做一个简单的继承。每当我创建一个学生时,它都会创建 StudentStats,正如您在代码中看到的那样,它应该在构造函数中具有随机值。但我总是从构造函数中得到相同的值。我没有看到缺少什么,我在构造函数中包含了 time.h 和 srand(time(null)) 。
这可能是一个初学者的问题,但我真的不明白有什么问题:/
这是学生班:
#pragma once
#include <iostream>
#include <string>
#include "Personne.h"
#include "PTUT.h"
#include "Marks.h"
#include "StudentStats.h"
#include "StudentClass.h"
using namespace std;
class PTUT;
class StudentClass;
class Etudiant : public Personne, public Marks, public StudentStats
这是 StudentStats 构造函数:
#include "StudentStats.h"
#include <iomanip>
#include <time.h>
StudentStats::StudentStats()
{
srand(time(NULL));
Morale = (rand() % 81) + 20 ;
MathLevel = (rand() % 81) + 20;
ProgLevel = (rand() % 81) + 20;
NetworkDBLevel = (rand() % 81) + 20;
GeneralLevel = (rand() % 81) + 20;
}
我得到的结果(我在 main 中创建了 4 个学生,每个学生的统计数据用“--------”分隔):
解决方案
Tx 到 Adrian Mole 的评论,我得到了答案。
我声明了一个名为“Seed”的静态布尔值,并且第一次调用构造函数,它将它从 false 更改为 True,所以下次我调用构造函数时,它不会尝试重新设置种子。
答:每次我调用构造函数时,我都会重新设置它(多次调用 srand time null),所以我声明了一个静态布尔值,用于调用 srand time null 一次。
推荐阅读
- sql-server - 将一个共享的 Cloud SQL 用于三个单独的 App Engine 项目是否有意义?
- android - 如何从内部存储中获取所有文件夹名称并将其显示在文本字段中?
- python - 根据真/假“集”在熊猫数据框中添加后续值
- ios - 初始化后如何更改按钮的位置?
- html - 更新(可重现)- 使用 MediaRecorder API(音频/webm 作品)录制时的间隙
- scala - Scala方法无法解析变量
- umbraco - 如何在 Umbraco 中使用图像裁剪器
- c# - Asp.Net Core FromBody 参数在角度 PUT 请求上始终为空
- javascript - Nodejs Mysql:在另一条路线中访问变量
- sql - SQL Server:我收到此消息 - 消息 8114,级别 16,状态 5