无法从私有数据部分访问矢量

Not able to access a vector from private data section?

本文关键字:访问 数据部      更新时间:2023-10-16

我有一个C++任务,可以在C++中创建一个更随机的随机数生成器.com。

每次尝试访问私有数据部分中的向量时,我都会收到错误消息,但我不知道为什么?

我还使用我们单独创建的复杂 Double 和 Integer 类。

头文件:

 #ifndef RANDOM
 #define RANDOM
 #include "Double.h"
 #include "Integer.h" 
 #include <vector>
 #include <iostream>
 #include <time.h>

 const int VECT_SIZE =250;
 const int PERCENT = 225;
 class Random
 {
 private:
     std::vector<double> vect(int(VECT_SIZE));
     void fillVect(double min, double max);
     void shuffle();
int index;
 public:
     Random(); // Default constructor 
     Random(double min, double max); 
     Random(Double min, Double max);
     Random(int min, int max); 
     Random(Integer min, Integer max); 
     Random(int seed); //seed the random number generator
     int nextInt(); // Returns the next random number as an int
     double nextDbl(); 
     void setRange(double min, double max); 
     Integer nextInteger();
     Double nextDouble();
 };
 #endif

主类中似乎有错误的部分:

 void Random::fillVect(double min, double max)
 {
     for(int i = 0; i < VECT_SIZE; i++)
         {
    this->vect.push_back((((double)rand()/(double)RAND_MAX)*(max - min)) + min);
 }
shuffle();
 }
 void Random::shuffle()
 {
     index =0;
     for (int i = 0; i <100; i++)
     {
         int r = rand() % VECT_SIZE;
         this->vect.push_back(vect[r]);
     } 
 }

主类中似乎有错误的部分:

 Random::Random(double min, double max)
 {
     vect.clear();
     fillVect(min, max);
 }

主类中似乎有错误的部分:

 double Random::nextDbl()
 {
     if(index>PERCENT)
     {
         this->shuffle();
     }
     index++;
     return this->vect[index];    
 }

这被称为最烦人的解析。

您的vect声明当前是采用int并返回vector<double>的函数的声明。大多数(所有?)优秀的编译器应该对此发出警告,以及可能的解决方案。

将声明更改为:

std::vector<double> vect = std::vector<double>(int(VECT_SIZE));