1

以下のコードに問題があります。ここで、ファイルから入力を取得して構造体のベクトルに格納するプログラムを書きたいのですが、構造体型ベクトルを宣言するとエラーが表示されます。

#include<iostream>
#include<fstream>
#include<vector>

using namespace std;

struct input
{
    char process[10];
    int burst_time;
    int arrival_time;
}input;

int main()
{
    ifstream myfile;
    vector<input> store;// problem with initializing vector

    myfile.open("input.txt",ios::in);

    if(myfile.is_open())
    {
        while(!myfile.eof())
        {
            myfile>>input.process;
            myfile>>input.burst_time;
            myfile>>input.arrival_time;

            store.push_back(input);//showing problem in this line also
        }
    }

    myfile.close();
    return 0;
}
4

2 に答える 2

7

inputのインスタンスとなる名前を非表示にしましたstruct input。非表示にします:

struct intput
{
 // as before
};
于 2013-10-15T12:57:20.693 に答える
0

これは非常に単純なことです:

宣言すると

struct input
{
    char process[10];
    int burst_time;
    int arrival_time;
} input;

という名前の構造体型inputだけでなく、という名前の変数も定義してinputいるため、メインではコンパイラーが混乱し、変数または型を参照するかどうかがわからないため、構造体変数宣言の名前を変更して、それを独自の名前として参照するだけですこのように:

#include<iostream>
#include<fstream>
#include<vector>

using namespace std;

struct input // Type defined as "input"
{
    char process[10];
    int burst_time;
    int arrival_time;
} input1; // And variable defined as "input1" consider this to be declared in main, to be a local variable.

int main()
{
    ifstream myfile;
    vector<input> store{};// problem solved referring to type and not variable

    myfile.open("input.txt",ios::in);

    if(myfile.is_open())
    {
        while(!myfile.eof())
        {
            myfile>>input1.process; // Here now the compiler understands that you are referring to the variable and not the type
            myfile>>input1.burst_time;
            myfile>>input1.arrival_time;

            store.push_back(input1);
        }
    }

    myfile.close();
    return 0;
}

このようにして、コンパイラは文句を言いません。

また、常に最初の文字を大文字にして新しい型 (構造など) を宣言することも考慮してください。Input代わりに、最初の文字が小文字の変数を使用して、input混乱を避け、この種の間違いを回避してください。

于 2017-07-27T05:33:14.803 に答える