我编写了一个结构和类,我想知道如何使用从文本文件中读取的值来调整它们的大小。这是结构和类:
typedef struct Chrom // creating the chrom structure
{
vector<vector <short int> > bit;
vector<vector <short int> > WaitingTime; //this is wij in the model
vector<vector <short int> > WaitingJob;//this is wj in the model, sigma wij must be equal to wj for each job J.
vector<vector <short int> > StartTime;
short int FinishTime;// finish time of each job in each machine
int fit;
} chrom;
在程序中我读了一个m的数字。
但是在尝试使用chrom.ShortTime.resize(m)
的程序中。它给了我一个错误。即使我试着写一个这样的课:
class ProblemConstraint{
short int Jobs, Machines;
public:
vector <short int> Processing;
vector <short int> t1;
vector <short int> t2;
short int M;
short int W;
void set_values(int, int);
void resize(){
ProblemConstraint.Processing.resize(Machines);
}
}ProblemConstraint;
但是我无法调整类中的向量。关于如何在程序中的类或结构中调整向量大小的任何建议?
答案 0 :(得分:0)
你的问题至少部分是你如何称呼它。
void resize(){
ProblemConstraint.Processing.resize(Machines);
}
应该是这样的:
void resize(){
Processing.resize(Machines);
// OR
this->Processing.resize(Machines);
}
在任何地方都没有名为“ProblemConstraint”的对象,这是一种类型,因此您无法在其上使用.
。
答案 1 :(得分:0)
Kevin Anderson解决了您的class
定义问题 - 让我解决结构定义问题: -
使用typedef
您基本上已完成的内容定义了chrom
类型的struct Chrom
类型,因此您的chrom.StartTime
是无效访问权限。您必须实例化类型chrom
的变量才能访问各个成员。试试这个: -
chrom A;
A.StartTime.resize(10);