2

キューのサイズをC++のintに格納しようとしています。私はこれにかなり慣れていませんが、何が間違っているのかわかりません。このエラーメッセージが表示されます:

"エラー:クラス以外のタイプ'int'である'free_men'のメンバー'size'の要求"

コードは次のとおりです。キューを初期化し、n個の数値で埋めています。

queue<int> free_men;
for(int i = 0; i < n; ++i) {
    free_men.push(i + 1);
}
int free_men = free_men.size();
4

3 に答える 3

3

との両方に同じ変数名がqueueありintます。変数の名前を変更しintます。

queue<int> free_men;
for(int i = 0; i < n; ++i) {
    free_men.push(i + 1);
}
int free_men_size = free_men.size();

エラーメッセージがより明確ではないことは驚くべきことです。

于 2012-06-20T21:16:10.137 に答える
2

変数名が重複しています。

同じスコープでfree_men(as )を再宣言することは違法であるため、言及したコンパイラメッセージ以上のものが表示されます。int

queue<int> free_men;
for(int i = 0; i < n; ++i) {
    free_men.push(i + 1);
}
int number_of_free_men = free_men.size(); // NOTE fixed name clash
于 2012-06-20T21:16:52.310 に答える
1

ここには2つの変数があり、どちらも同じスコープ内の同じ名前です。最後の行を次のように変更した場合:

int free_men_size = free_men.size()

物事はおそらくうまくいくでしょう。

于 2012-06-20T21:16:53.183 に答える