2

我正在尝试将队列的大小存储在 C++ 中的 int 中。我对此很陌生,但我不知道我可能做错了什么。我收到此错误消息:

“错误:在'free_men'中请求成员'size',它是非类类型'int'”

这是代码:我初始化了队列,并且只是用 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

您在这里有两个变量,它们在同一范围内具有相同的名称。如果将最后一行更改为:

int free_men_size = free_men.size()

事情可能会更好。

于 2012-06-20T21:16:53.183 回答