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

时间:2016-03-17 00:19:20

标签: c++ class random vector private

我有一个C ++赋值来在C ++中创建一个更随机的随机数生成器。具体细节可以找到:http://www.cplusplus.com/forum/beginner/97056/

每次尝试访问私有数据部分中的向量时,我都会收到错误消息,但我无法弄清楚原因?

我也在使用我们单独创建的复杂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];    
 }

1 个答案:

答案 0 :(得分:1)

这称为most vexing parse

您对vect的声明目前是int并返回vector<double>的函数。大多数(所有?)好的编译器应该发出警告,并提供可能的解决方案。

将声明更改为:

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