очередь из стл - PullRequest
       33

очередь из стл

3 голосов
/ 19 января 2010

Я пытаюсь получить следующий код для компиляции с использованием g ++ 4.2.1 и получаю следующие ошибки

КОД:

#include <iostream>
#include <queue>

using namespace std;

int main (int argc, char * const argv[])
{    
    queue<int> myqueue();
    for(int i = 0; i < 10; i++)
        myqueue.push(i);

    cout << myqueue.size();

    return 0;
}

ОШИБКИ:

main.cpp: In function ‘int main(int, char* const*)’:
main.cpp:10: error: request for member ‘push’ in ‘myqueue’, which is of non-class type ‘std::queue<int, std::deque<int, std::allocator<int> > > ()()’
main.cpp:12: error: request for member ‘size’ in ‘myqueue’, which is of non-class type ‘std::queue<int, std::deque<int, std::allocator<int> > > ()()’

Есть идеи, почему?Я пробовал в Eclipse, X-Code и через терминал.

1 Ответ

10 голосов
/ 19 января 2010

C ++ FAQ Lite § 10.2

Есть ли разница между List x; и List x();?

A большой разница!

Предположим, что List - это имя некоторого класса. Затем функция f() объявляет локальный List объект с именем x:

void f()
{
  List x;     // Local object named x (of class List)
  ...
}

Но функция g() объявляет функцию с именем x(), которая возвращает List:

void g()
{
  List x();   // Function named x (that returns a List)
  ...
}

Замените queue<int> myqueue(); на queue<int> myqueue; и все будет в порядке.

...