Инструкция new
возвращает указатель, поэтому вы не заканчиваете эту строку . Тип переменной должен быть указателем, если вы настаиваете на использовании new
. И тип справа от new
будет того же типа, что и тип указателя инициализируемой переменной.
queue<int, list<int> >* myQueue = new queue<int, list<int> >;
В общем, для динамического выделения любого типа X
, вы просто пишете new X
. Возможно, вы были немного озадачены тем, насколько сложно полное имя вашего типа (запятые, угловые скобки, несколько токенов и т. Д.). Вы можете упростить его с помощью typedef , чтобы присвоить имени однозначное имя:
typedef queue<int, list<int> > int_list_queue;
Тогда вы можете написать это:
int_list_queue* myQueue = new int_list_queue;
Если вам действительно не нужен указатель, тогда объявление проще:
queue<int, list<int> > myQueue;
// or
int_list_queue myQueue;