Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 20.06.2019
Сообщений: 2
Builder 6

Наследование классов

01.07.2019, 17:37. Показов 2083. Ответов 1

Студворк — интернет-сервис помощи студентам
Попытка реализовать наследование классов закончилась ошибкой E2040 Declaration terminated incorrectly в 37 строке файла _stddef.h
Вот он:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*  _stddef.h
 
    multi-includable Definitions for common types, and NULL
 
*/
 
/*
 *      C/C++ Run Time Library - Version 11.0
 *
 *      Copyright (c) 1987, 2002 by Borland Software Corporation
 *      All Rights Reserved.
 *
 */
 
 
/* $Revision: 9.6.2.2 $ */
 
#ifndef ___STDDEF_H
#define ___STDDEF_H
 
#if !defined(___DEFS_H)
#include <_defs.h>
#endif
 
#ifndef NULL
#include <_null.h>
#endif
 
/* Full locale support is on by default now.  To get the previous behavior,
   define __SIMPLE_LOCALES__
*/
#ifndef __SIMPLE_LOCALES__
#define __USELOCALES__
#endif
 
#ifdef __cplusplus
namespace std {
#endif /* __cplusplus */
 
/* Define __STD to expand to std:: or nothing depending on being in C++. */
#ifdef __cplusplus
#  define __STD std::
#else
#  define __STD
#endif
 
/*
   Define the size_t type in the std namespace if in C++ or globally if in C.
   If we're in C++, make the _SIZE_T macro expand to std::size_t
*/
 
#if !defined(_SIZE_T) && !defined(_SIZE_T_DEFINED)
#  define _SIZE_T_DEFINED
   typedef unsigned int size_t;
#  if defined(__cplusplus)
#    define _SIZE_T std::size_t
#  else
#    define _SIZE_T size_t
#  endif
#endif
 
 
#if !defined(RC_INVOKED)
 
#if defined(__STDC__)
#pragma warn -nak
#endif
 
#endif  /* !RC_INVOKED */
 
#ifndef _PTRDIFF_T
#define _PTRDIFF_T
typedef int     ptrdiff_t;
#endif
 
 
#define offsetof( s_name, m_name )  (_SIZE_T)&(((s_name _FAR *)0)->m_name)
 
#ifndef __cplusplus
#if !defined(_WCHAR_T) && !defined(_WCHAR_T_DEFINED)
#define _WCHAR_T
#define _WCHAR_T_DEFINED  /* For WINDOWS.H */
typedef unsigned short wchar_t;
#endif
#endif
 
/*
   Define the wint_t type in the std namespace if in C++ or globally if in C.
   If we're in C++, make the _WINT_T macro expand to std::wint_t
*/
 
#if !defined(_WINT_T)
typedef wchar_t wint_t;
#  ifdef __cplusplus
#    define _WINT_T std::wint_t
#  else
#    define _WINT_T wint_t
#  endif
#endif
 
#ifndef _WCTYPE_T_DEFINED
typedef wchar_t wctype_t;
#define _WCTYPE_T_DEFINED
#endif
 
#ifdef __cplusplus
extern "C" {
#endif
extern unsigned long _RTLENTRY _EXPFUNC __threadid(void);
#define _threadid (__threadid())
 
#ifdef  __cplusplus
}
#endif
 
#if !defined(RC_INVOKED)
 
#if defined(__STDC__)
#pragma warn .nak
#endif
 
#endif  /* !RC_INVOKED */
 
#ifdef __cplusplus
} // std
#endif /* __cplusplus */
 
#endif  /* __STDDEF_H */
 
#if defined(__cplusplus) && !defined(__USING_CNAME__) && !defined(___STDDEF_H_USING_LIST)
#define ___STDDEF_H_USING_LIST
     using std::ptrdiff_t;
     using std::__threadid;
     using std::size_t;
     using std::wint_t;
     using std::wctype_t;
#endif /
Прилагаю производный и базовый классы:
DATA.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#ifndef __DATA_H_
#define __DATA_H_
 
class DATA {
public:
        DATA(int F,int L_I,int L_P,int N_I,int N_P);  //конструктор
        ~DATA();     //деструктор
        double Pi;          //пи
        int GetI(double *X);   //вывод ряда значений тока в массив Х
        int GetIId(int *X);    //вывод формы сигнала в массив Х
        int GetU(double *X);   //вывод ряда значений напряжения в массив Х
        int SetI(double *X);   //ввод ряда значений тока из массива Х
        int SetIId(int *X);    //ввод формы сигнала из массива Х
        int SetU(double *X);   //ввод ряда значений напряжения из массива Х
protected:
        double *I;           //ток
        double *U;           //напряжение
        int *IId;         //форма входного сигнала
        int *PoMeas;         /*параметры измерения
                                0 частота АЦП
                                1 длинна импульса
                                2 длинна паузы(все в отсчетах АЦП)
                                3 кол-во импульсов(+ и - : одинаково)
                                4 кол-во пауз
                             */
        int NRecords;         //количество отсчетов АЦП в записи
        double dTAGC;         //период АЦП(расстояние по времени
                                //между точками записи)
 
};
 
 
#endif // __IDATA_H__
DATA.сpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include "DATA.h"
#include <stdlib.h>
#include <iostream.h>
 
DATA::DATA(int F,int L_I,int L_P,int N_I,int N_P){
        dTAGC = 1000/((double)F);
        NRecords = L_I*2*N_I + N_P*L_P ;
        PoMeas[0] = F;
        PoMeas[1] = L_I;
        PoMeas[2] = L_P;
        PoMeas[3] = N_I;
        PoMeas[4] = N_P;
        I = new double[NRecords];
        IId = new int[NRecords];
        U = new double[NRecords];
        Pi=3.141592;
}
 
int DATA::GetI(double *X){
        int i;
        for(i=0;i<NRecords;i++){
                X[i]=I[i];
        }
        return 0;
}
 
int DATA::GetIId(int *X){
        int i;
        for(i=0;i<NRecords;i++){
                X[i]=IId[i];
        }
        return 0;
}
 
int DATA::GetU(double *X){
        int i;
        for(i=0;i<NRecords;i++){
                X[i]=U[i];
        }
        return 0;
}
 
int DATA::SetI(double *X){
        int i;
        for(i=0;i<NRecords;i++){
                I[i]=X[i];
        }
        return 0;
}
 
int DATA::SetIId(int *X){
        int i;
        for(i=0;i<NRecords;i++){
                IId[i]=X[i];
        }
        return 0;
}
 
int DATA::SetU(double *X){
        int i;
        for(i=0;i<NRecords;i++){
                U[i]=X[i];
        }
        return 0;
}
 
DATA::~DATA(){
        delete I;
        delete IId;
        delete U;
};     //деструктор
DATA_M.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#ifndef __DATA_M_H_
#define __DATA_M_H_
 
#include "DATA.h"
 
class DATA_M: public DATA{
public:
        DATA_M(int F,int L_I,int L_P,int N);
 
        ~DATA_M();
 
protected:
        double *U_M;          //смоделированный сигнал
        double *PoIntLine;    /*линейные параметры сигнала
                                0 сопротивление среды
                                1 частота технической помехи(по умолчанию 50гц)
                                2 а технической помехи
                                3 в технической помехи
                                4 а линейного тренда
                                5 в линейного тренда
                                6 амплитуда индукции
                                7 амплитуда ВП
                             */
        double a_L,a_C;       //нелинейные параметры сигнала
                      //коэффициенты затухания индукции и ВП
}
 
#endif
DATA_M.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "DATA_M.h"
#include <stdlib.h>
#include <iostream.h>
 
DATA_M::DATA_M(int F,int L_I,int L_P,int N)
:DATA (F,L_I,L_P,N,N){
        U_M = new double[NRecords];
}
 
DATA_M::~DATA_M():~DATA(){
        delete U_M;
};
Работаю в Borland C++ Builder 6. В чем может быть проблема, что вызвало ошибку в, казалось бы, стороннем файле?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.07.2019, 17:37
Ответы с готовыми решениями:

Наследование классов
Создать базовый класс «прямоугольник», описав в нем функции ввода параметров, вывод их на экран, нахождение площади прямоугольника....

Наследование классов
Приветствую! Требуется унаследовать произвольным классом TStringGridMyClass у базового класса TStringGrid метод со спецификатором...

наследование классов, не могу найти ошибку в С++
вот код #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;string.h&gt; enum TShape {SHAPE_PRISM=0,...

1
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
01.07.2019, 18:25
Лучший ответ Сообщение было отмечено omar9marcov как решение

Решение

Цитата Сообщение от omar9marcov Посмотреть сообщение
Попытка реализовать наследование классов закончилась ошибкой E2040 Declaration terminated incorrectly в 37 строке файла _stddef.h
Вот он:
Не поставил точку с запятой после класса в DATA_M.h, строка 26
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.07.2019, 18:25
Помогаю со студенческими работами здесь

Наследование шаблоном шаблона (наследование конструктора)
Всем привет! Думаю, что эта тема хоть и касается общих вопросов программирования, но будет уместна в данном разделе т.к. у различных...

Наследование. Написать набор классов, представляющий выражения.
Доброго времени суток! Помогите разобраться с данной задачей, пожалуйста. Изучаем в университете С++, но писать код никто не учит. Сама...

Автоматическая генерация классов С ++ с UML диаграмм классов. Наследование в с++. Абстрактные классы. WhiteStarUML
Создать классовую модель(желательно в WhiteStarUML), которая включает в себя абстрактный класс CGraphicsObject, его наследник - базовый...

Заменить наследование классов на наследование интерфейсов
#include &lt;iostream&gt; #include &lt;assert.h&gt; using namespace std; int people_on_base = 100; int vehicles_on_base = 100; double...

Наследование классов. Копирование производных классов
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем класс А { int mA; ...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru