在C+中存储队列大小的问题+; 我试图在C++中的INT中存储队列的大小。我对这很陌生,但我不知道我会做错什么。我收到以下错误消息:

在C+中存储队列大小的问题+; 我试图在C++中的INT中存储队列的大小。我对这很陌生,但我不知道我会做错什么。我收到以下错误消息:,c++,size,queue,C++,Size,Queue,“错误:请求'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(); 无需排队; 对于(int i=0;i

“错误:请求'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();
无需排队;
对于(int i=0;i
您对
队列和
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();
无需排队;
对于(int i=0;i

令人惊讶的是,错误消息并不更加明确。

您有一个重复的变量名

您将看到的不仅仅是您提到的编译器消息,因为在同一范围内重新声明
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
无需排队;
对于(int i=0;i
这里有两个变量,它们在同一范围内具有相同的名称。如果将最后一行更改为:

int free_men_size = free_men.size()

事情可能会好一些。

我想这条消息中更明确的部分没有被注意到,这可能只是令人惊讶:)