【问题标题】:Issue storing the size of a queue in C++在 C++ 中存储队列大小的问题
【发布时间】:2012-06-20 21:14:40
【问题描述】:

我正在尝试将队列的大小存储在 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();

【问题讨论】:

    标签: c++ size queue


    【解决方案1】:

    queueint 的变量名相同。重命名int 变量。

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

    令人惊讶的是错误消息并没有更明确。

    【讨论】:

    • 我认为消息中更明确的部分没有被注意到可能只是令人惊讶:)
    【解决方案2】:

    你有一个重复的变量名。

    您将看到的不仅仅是您提到的编译器消息,因为在同一范围内重新声明 free_men(如 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
    

    【讨论】:

      【解决方案3】:

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

      int free_men_size = free_men.size()
      

      事情可能会更好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-28
        • 1970-01-01
        • 2021-10-21
        • 1970-01-01
        • 2021-06-05
        相关资源
        最近更新 更多