Очередь из стл
Я пытаюсь получить следующий код для компиляции с использованием 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 ответ
Решение
Есть ли разница между
List x;
а такжеList x();
?Большая разница!
Предположим, что
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;
и у тебя все будет хорошо.