Наследовать чисто виртуальную функцию, которая бросает
Как следует из названия, я хотел бы сделать унаследованную функцию класса из функции класса, которая выдает исключение. Функция в базовом классе выглядит следующим образом:
template <typename T>
class IQueue {
public:
virtual T dequeue()throw(…) = 0;
}
Обратите внимание, что мне не разрешено изменять это, так как это для класса. Как я должен объявить функцию в переадресованном классе? Я пытался так:
template <typename T>
class Queue : public IQueue < T >{
public:
virtual T dequeue()throw(…) {}
}
Но мне не разрешено его запускать, и это дает мне ошибку, которая указывает на объявление в базовом классе. Так что я думаю, что я не переопределяю это, как я должен.
Вот ошибки, которые я получаю:
unexpected token(s) preceding ';'
syntax error : indentifier '...'
unable to recover from previous error(s); stopping compilation".
и два вверху находятся в IQueue.h, а последний в xlocale. Я использую Visual Studio 2013.
1 ответ
Ваша проблема связана с использованием Unicode HORIZONTAL ELLIPSIS …
вместо ...
, Однако даже throw(...)
не компилируется в моей системе. Класс также пропускает точку с запятой в конце своего объявления, хотя не ясно, была ли это просто ошибка при загрузке в переполнение стека.
Вы упомянули, что скопировали класс из описания назначения. Что бы это ни было скопировано, это неправильно форматирует текст, и это должен исправить профессор / тот, кто управляет заданиями.
Кроме того, в общем, использование спецификаций исключений считается плохой идеей в C++.