2017-07-18 2 views
1

Ich habe eine Struktur und Klasse geschrieben, ich frage mich, wie kann ich sie mit dem Wert ändern, den ich aus einer Textdatei gelesen habe. Hier ist die Struktur und Klasse:Wie ändert man die Größe eines Vektors, der Mitglied der Struktur oder Klasse ist?

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;  

In dem Programm lese ich eine Zahl, die m ist. Aber im Programm, wenn ich versuche, chrom.ShortTime.resize(m) zu verwenden. Es gibt mir einen Fehler. Auch habe ich versucht, eine Klasse wie folgt zu schreiben:

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; 

Aber ich kann nicht die Vektoren innerhalb einer Klasse ändern. Gibt es eine Empfehlung, wie ich einen Vektor innerhalb einer Klasse oder Struktur im Programm skalieren kann?

+5

Welche Fehler bekommen Sie? – NathanOliver

+1

"typedef struct Chrom" - Sie brauchen das 'typedef' nicht in C++, das ist ein C-ism. –

+0

Mögliches Duplikat - https://stackoverflow.com/questions/37229215/how-to-resize-a-2d-vector-of-struct – JazzSoft

Antwort

0

Ihr Problem ist zumindest teilweise, wie Sie es nennen.

void resize(){ 
    ProblemConstraint.Processing.resize(Machines); 
} 

Sollte dies sein:

void resize(){ 
    Processing.resize(Machines); 
    // OR 
    this->Processing.resize(Machines); 
} 

Es gibt kein Objekt mit dem Namen "ProblemConstraint" überall, das ist eine Art, so dass Sie nicht . auf sie verwenden können.

+1

"* Es gibt nirgendwo ein Objekt namens" Processing "* - meinst du *" ProblemConstraint "*? – vu1p3n0x

+0

@ vu1p3n0x Ja. Verdammte Tippfehler. Bearbeiten –

0

Kevin Anderson hat Problem mit Ihrem class Definition angesprochen - lassen Sie mich das struct Definition Problem beheben: -

Mit typedef, was Sie haben, ist im Grunde eine Art chrom von struct Chrom Typ definiert getan, damit Ihr chrom.StartTime ist ein ungültiger Zugriff. Sie müssen instantiate eine Variable vom Typ chrom, bevor Sie die einzelnen Mitglieder zugreifen können .. Versuchen Sie folgendes: -

chrom A; 
A.StartTime.resize(10); 
+0

Danke Zakir und Kevin, es funktioniert jetzt. – questionnaire12

Verwandte Themen