Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 31

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

30.10.2011, 18:11. Показов 1049. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создаю базовый класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <string>
 
using namespace std ;
 
class T
{
protected:
    string name ;
public:
    T( string ) ;
    void print() ;
};
Наследую о него другой класс(классы расположены в разных .h файлах):
C++
1
2
3
4
5
6
7
8
9
#include "T.h"
class C: public T
{
protected:
    int a ;
public:
    C( string, int ) ;
    void print() ;
};
Возникают 2 ошибки:
1) В файле T.h - 'class' type redefinition ;
2) В файле C.h - base class undefined.

Как исправить эти ошибки?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
30.10.2011, 18:11
Ответы с готовыми решениями:

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

Наследование
Добрый вечер! Ребята, почему в данном примере #include &lt;iostream&gt; using namespace std; ...

Наследование
Здравствуйте! Написал код, не выдает никаких ошибок, но не работает. Может кто помочь сказать в чем может быть ошибка? Изначально был...

5
Заблокирован
30.10.2011, 18:17
Цитата Сообщение от Dkan Посмотреть сообщение
Создаю базовый класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <string>
 
using namespace std ;
 
class T
{
protected:
    string name ;
public:
    T( string ) ;
    void print() ;
};
Наследую о него другой класс(классы расположены в разных .h файлах):
C++
1
2
3
4
5
6
7
8
9
#include "T.h"
class C: public T
{
protected:
    int a ;
public:
    C( string, int ) ;
    void print() ;
};
Возникают 2 ошибки:
1) В файле T.h - 'class' type redefinition ;
2) В файле C.h - base class undefined.

Как исправить эти ошибки?
В том коде, который вы привели, никакого переопределения класса T не видно. Надо внимательно читать сообщение об ошибке, так как оно обычно содержит ссылку на тот класс, который, якобы, переопределяется.

Проблема скорей всего заключается в том,что вы эти два заголовка включаете в модуль с main, и поэтому заголовок T.h у вас включается дважды. Нужно вставитьстандартнуюзащиту от включенияз аголовока дважды, посредством объявления манифестной константны.
1
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 31
30.10.2011, 18:23  [ТС]
Если не было бы не писал)

Error 1 error C2011: 'T' : 'class' type redefinition c:\...\T.h 6
Error 2 error C2504: 'T' : base class undefined c:\...\C.h 3

Указывает на символ { в каждом классе.

Добавлено через 58 секунд
Это как?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
30.10.2011, 18:27
Dkan, Стражи включения в каждый хедер внесите.

C++
1
2
3
4
#ifndef __FILENAME_H__
#define __FILENAME_H__
//Между директивами будет ваш код.
#endif
Вместо __FILENAME_H__ соответственно название вашего хедера.
1
Заблокирован
30.10.2011, 18:53
Цитата Сообщение от ForEveR Посмотреть сообщение
Dkan, Стражи включения в каждый хедер внесите.

C++
1
2
3
4
#ifndef __FILENAME_H__
#define __FILENAME_H__
//Между директивами будет ваш код.
#endif
Вместо __FILENAME_H__ соответственно название вашего хедера.

И только не надо вначале ставить подчеркивание у ьанифестных констант, так как подчеркивание зарезервировано разработчиками компиляторов и самого стандарта языка С++ для своих нужд. То есть не следует объявлять идентификаторы, начинающиеся с подчеркивания.
1
0 / 0 / 0
Регистрация: 05.10.2011
Сообщений: 31
30.10.2011, 20:23  [ТС]
И еще вопрос: вызывается ли конструктор базового класса если его явно не вызывать?

В этом случае вызываем явно.
C++
1
2
3
4
5
6
7
8
9
Base( string n )
{
n = name ;
}
 
Inh( string n, int x ):Base(n)
{
y = x ;
}
А в этом?

C++
1
2
3
4
5
6
7
8
9
Base( )
{
name = "name" ;
}
 
Inh( int x )
{
y = x ;
}
При создании объекта класса Inh будет ли неявно вызван конструктор класса Base?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2011, 20:23
Помогаю со студенческими работами здесь

Наследование
Реализовать наследование классов квартиры,этаж,подъезд,дом

Наследование
Суть задачи: Реализуйте класс символьная строка,наследуйте от него класс двоичная строка. Реализуйте методы Show(от базовой строки) ...

Наследование
int main() { setlocale(LC_ALL, &quot;RUS&quot;); Stud FIRST_TRY; FIRST_TRY.set(); exam(FIRST_TRY); FIRST_TRY.get(); ...

Наследование
Доброе дня, прошу вас помочь в решение данной задачи.

наследование
Помогите разобраться в программе. Почему возникают такие ошибки cylindr.cpp expected `,' or `...' before '&amp;' token cylindr.cpp `c'...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru