6 / 5 / 3
Регистрация: 16.01.2016
Сообщений: 255
1

Declaration terminated incorrectly в наследовании

16.10.2017, 15:23. Показов 2573. Ответов 10
Метки нет (Все метки)

Пишу абстрактный класс для последовательности

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template<typename TElement>
class Sequence {
public:
    virtual int GetLenght() = 0;
    virtual int getIsEmpty() = 0;
    virtual TElement Get(int index) = 0;
    virtual TElement GetFirst() = 0;
    virtual TElement GetLast() = 0;
    virtual Sequence<TElement> *GetSubsequence(int startIndex,
        int endIndex) = 0;
    virtual void Append(TElement item) = 0;
    virtual void Prepend(TElement item) = 0;
    virtual void InsertAt(int index, TElement item) = 0;
    virtual void Remove(TElement item) = 0;
};
Дальше пишу наследованный класс для массива

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template<typename TElement>
class ArraySequence : public Sequence<TElement> {
private:
    TElement *data;
    int quantity;
public:
/*конструктор, деструктор, все такое*/
/*начинаю переопределять*/
 
Sequence<TElement> *GetSubsequence(int startIndex, int endIndex) override;
 
/* и другие */
}
И на этой последней строчке Sequence<TElement> *GetSubsequence(int startIndex, int endIndex) override;
Возникает ошибка
E2040 Declaration terminated incorrectly
В чем проблема?
c++ builder Rad Studio 10.2 Tokyo
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2017, 15:23
Ответы с готовыми решениями:

Declaration terminated incorrectly
#include&lt;stdio.h&gt; { int a,b,c; a=5; b=7; c=a*b; printf(&quot;multiplication=%d\n&quot;,c); } Помогите...

declaration terminated incorrectly
Делал лабу на C++ и возникла проблема - &quot;declaration terminated incorrectly&quot;, Кто-нибудь может...

Ошибка: declaration terminated incorrectly
ко знает что за ошибка помогите #include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; void...

Очередь из списков. Declaration terminated incorrectly
Подскажите откуда такая ошибка? #include &lt;iostream&gt; #include &lt;conio&gt; #include &lt;stdlib&gt;...

10
99 / 70 / 13
Регистрация: 15.12.2013
Сообщений: 455
16.10.2017, 15:26 2
Быть может точку с запятой забыл после объявления класса?
0
6 / 5 / 3
Регистрация: 16.01.2016
Сообщений: 255
16.10.2017, 15:30  [ТС] 3
Цитата Сообщение от ASCII Посмотреть сообщение
Быть может точку с запятой забыл после объявления класса?
Какого из классов?
Код не полный, после всех объявлений классов точка с запятой стоит

Добавлено через 2 минуты
Если override убрать, то ошибки не будет, но при этом надо еще будет тип поменять и смысл наследования пропадет
0
99 / 70 / 13
Регистрация: 15.12.2013
Сообщений: 455
16.10.2017, 15:53 4
В примере после ArraySequence нет точки с запятой. А вообще, загугли свою ошибку.
http://docwiki.embarcadero.com... y_(C%2B%2B)
0
6 / 5 / 3
Регистрация: 16.01.2016
Сообщений: 255
16.10.2017, 23:19  [ТС] 5
А вообще, что это исключение означает?

Добавлено через 45 секунд
Цитата Сообщение от ASCII Посмотреть сообщение
В примере после ArraySequence нет точки с запятой. А вообще, загугли свою ошибку.
Ну это только пример, в компиляторе все стоит

Добавлено через 1 минуту
Цитата Сообщение от grigandal1580 Посмотреть сообщение
http://docwiki.embarcadero.com/RADSt...ectly_(C%2B%2B)
0
grigandal1580
Declaration terminated incorrectly в наследовании [В закладки]
А вообще, что это исключение означает
А, вот

Добавлено через 2 минуты
Все равно, пока не ясно, в чем проблема

Добавлено через 7 часов 20 минут
Может дело в компиляторе?
0
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
16.10.2017, 23:35 6
Цитата Сообщение от grigandal1580 Посмотреть сообщение
Может дело в компиляторе?
Проверь, компилируется ли самый простой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
template <typename TElement>
class Sequence
{
public:
    virtual Sequence<TElement> *GetSubsequence(int, int) = 0;
    virtual ~Sequence() {}
};
 
template<typename TElement>
class ArraySequence : public Sequence<TElement>
{
public:
    Sequence<TElement> *GetSubsequence(int, int) override
    {
        return nullptr;
    }
};
 
int main()
{
    ArraySequence<int> as;
}
0
6 / 5 / 3
Регистрация: 16.01.2016
Сообщений: 255
16.10.2017, 23:37  [ТС] 7
notAll, А разве нужен деструктор в абстрактном классе?
0
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
16.10.2017, 23:41 8
Если объекты будут использоваться полиморфно, то обязательно нужен. Ну, и если у нас есть хотя бы одна виртуальная функция, то тоже нужен.
0
6 / 5 / 3
Регистрация: 16.01.2016
Сообщений: 255
16.10.2017, 23:47  [ТС] 9
notAll, Но в общем ошибка сохранилась

Добавлено через 4 минуты
то есть он ругается, что оверрайд лишний? но без него все надо делать по-друому
0
495 / 209 / 70
Регистрация: 27.05.2016
Сообщений: 557
16.10.2017, 23:49 10
Лучший ответ Сообщение было отмечено grigandal1580 как решение

Решение

Значит компилятор не поддерживает С++11 или он не включен. Как включить можно поискать в шапках форума. Скачать новый компилятор можно отсюда: https://sourceforge.net/projec... posix/seh/ или Visual Studio 15/17.
1
6 / 5 / 3
Регистрация: 16.01.2016
Сообщений: 255
17.10.2017, 20:43  [ТС] 11
notAll, Rad 10.2 Tokyo вроде должен поддерживать, щас пороемся

Добавлено через 20 минут
notAll, Поддерживает, написано в описании
Будем рыться, как включить

Добавлено через 20 часов 30 минут
Rad Studio переключить компилятор

И все заработало
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2017, 20:43
Помогаю со студенческими работами здесь

Declaration terminated incorrectly в чем ошибка?
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;iostream.h&gt; void main() {...

Пишет ошибку Declaration terminated Incorrectly
Прошу помочь мне с вот такой задачей: Дана матрица A=(aij)mxn. Найти минимальные элементы среди...

Ошибка E2040 Declaration terminated incorrectly
//--------------------------------------------------------------------------- #include &lt;clx.h&gt;...

[C++] Unit1.cpp(20): E2040 Declaration terminated incorrectly
//--------------------------------------------------------------------------- #include &lt;vcl.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru