LINUX.ORG.RU

Еще один тупой вопрос по STL


0

0

Q. Как создать стандартную очередь (экземпляр класса std::queue), состоящую из элементов пользовательского типа?

По идее, Страуструп пишет, что никаких ограничений для этого нет, однако все примеры дает с int и string. А вот, что хотелось бы видеть

struct Q_el
{
int v; // vertex
int w; // vertex
int c; // vw-weight
};

queue<Q_el, list<Q_e> > Q;

В последней строке провоидлись вароиации на тему

queue<Q_el, list<Q_e>, allocate > Q;

queue<Q_el> Q;

Однако g++ вываливается с ошибкой

[unforgiven | /home/unforgiven/DO : 18:46:00] $ g++ zad1.cpp -o zad1
zad1.cpp: In function `int main()':
zad1.cpp:24: error: `main()::Q_el' uses local type `main()::Q_el'
zad1.cpp:24: error: trying to instantiate `template<class _Alloc> class std::allocator'
zad1.cpp:24: error: template argument 2 is invalid
zad1.cpp:24: error: template argument 2 is invalid
zad1.cpp:24: error: invalid type in declaration before ';' token
Ответ на: комментарий от Reset

да не, причина конечно не в опечатке, а в тупости аффтара: оказывается, в С++ нельзя объявлять структуры внутри функций...

Unforgiven
() автор топика
Ответ на: комментарий от Unforgiven

можно объявлять внутри функций, а вот можно ли использовать такие структуры внутри шаблонов это ещё вопрос, стандарт читать надо

Reset ★★★★★
()
Ответ на: комментарий от Reset

> а вот можно ли использовать такие структуры внутри шаблонов

нельзя

fghj ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.