Не могли бы вы указать на то, что не так со следующим классом шаблонов?Visual C++ 2012: компилятор жалуется на «missing»; «
#include <vector>
template <typename T, typename C>
struct pQueue{
pQueue():currEnd(c.end()){};
~pQueue(){c.~vector();}
void insert(T& t);
void remove(T& t);
bool find(T& t);
T head(void);
private:
std::vector<T> c;
std::vector<T>::iterator currEnd;
};
Компилятор не очень рад о std::vector<T>::iterator currEnd;
линии, и выдает следующие сообщения об ошибках:
ошибка C2146: синтаксическая ошибка: отсутствует «;» перед идентификатором 'currEnd'
ошибка C4430: отсутствует спецификатор типа - int. Примечание: C++ не поддерживает default-int
Большое спасибо!
[Релевантно] (http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to-put-the-template-and-typename-keywords). Кстати, GCC и Clang дают для этого чрезвычайно простые ошибки. – chris
К счастью, gcc предлагает решение: http://ideone.com/tUQz2B – mfontanini
Не связано с ошибками, но вы явно вызываете деструктор из '~ pQueue()'. Зачем? Поскольку 'c' является фактическим вектором, а не указателем, его деструктор будет работать в любом случае. –