Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 5.00
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
#1

Унаследование классов - C++

15.03.2013, 02:21. Просмотров 1521. Ответов 10
Метки нет (Все метки)

Главный класс.

C++
1
2
3
4
5
class CStart
{
    public:
        void Start( );
};
Унаследование:

C++
1
2
3
4
5
class CEnd : public CStart
{
    public:
        void End( );
};
Могу ли я обратиться к void Start( ); так же и через класс CEnd ?

C++
1
2
3
4
5
6
7
8
9
void CStart::Start() 
{
    return;
}
 
void CEnd::Start() 
{
    return;
}
У нас конечно ошибка: Использование унаследованных членов не допускается.

Просто мне в разных классах,необходимо обратиться к одной общей функции.


У меня очень большой проект и проблема с ООП. Но об ООП я читал и конкретного решения нет,как быть с большими проектами,где необходимо использовать определеную функцию многократно,кроме как использовать эту функцию одну,для всех нужд,то есть пихать все в неё,но это не удобно,когда очень много кода,лучше когда все разбито по полочкам, или делать с неё ветви ( Под этим я подрузомеваю просто в неё добавлять кучу функций,которые я буду использовать в других срр,но выйдет плохой код )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.03.2013, 02:21     Унаследование классов
Посмотрите здесь:

унаследование, как реализовать? - C++
надо сделать следующий класс class TParent { TSon* son1; TSon* son2; TSon* son3; }; TSon - является потомком...

Иерархия классов - C++
Порядок выполнения работы. 1. Создать проект, который содержит консольную программу Win32. 2. Определить иерархию классов (в...

Использование классов - C++
Разработать заголовочный файл, содержащий описание соответствующего класса, функции и операторы. Описание функций-членов класса разместить...

Создание классов - C++
как создать класс вектор, содержащий ссылку на int, размерность вектора и переменную ошибки? переменная ошибки - это что?

Сортировка классов - C++
Отсортировать жильцов дома в алфавитном порядке, используя классы. Данные должны храниться в текстовом файле На данный момент вот все...

Использование классов - C++
Не хочет запускаться, помогите найти ошибку #include <iostream> #define N 5 using namespace std; class electronic_store { ...

иерархия классов - C++
подскажите как написать иерархию классов описывающих элементы графического интерфейса(окна,кнопки,поля ввода,метки,списки) и если можно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Модератор
Эксперт CЭксперт С++
7162 / 4328 / 632
Регистрация: 29.11.2010
Сообщений: 11,750
15.03.2013, 02:34     Унаследование классов #2
Не понял, что требуется то?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
class CStart
{
    public:
        void Start( ) { std::cout << "CStart(Start)\n"; }
};
 
class CEnd : public CStart
{
    public:
        void Start() { std::cout << "CEnd(Start)\n"; }
        void End( ) {}
};
 
 
 
int main()
{
    CEnd c;
    c.Start();
    c.CStart::Start();
}
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
15.03.2013, 02:40  [ТС]     Унаследование классов #3
Я не знаю,это уже не первая моя тема,но что мне делать,никто не может подсказать.

Мне просто нужно использовать одну функцию в разных срр.

main.cpp



C++
1
2
3
4
5
int main()
{
       Start();
       return 0;
}
Мне и надо выполнять разный код в Start()

1.cpp

C++
1
2
3
4
void Start()
{
 
}
2.cpp

C++
1
2
3
void Start()
{
}
и тд.

Я думал классы как-то решат проблему.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
15.03.2013, 02:59     Унаследование классов #4
Цитата Сообщение от pEntity Посмотреть сообщение
одну функцию в разных срр.
Цитата Сообщение от pEntity Посмотреть сообщение
разный код в Start()
ты сам то определись, что тебе нужно: разные функции или одинаковые.
Тебе просто вызвать функцию, созданную в другом срр файле что ли?
Классы с проблемами разделения по файлам никак не связаны.
MrGluck
Модератор
Эксперт CЭксперт С++
7162 / 4328 / 632
Регистрация: 29.11.2010
Сообщений: 11,750
15.03.2013, 03:07     Унаследование классов #5
вынести функцию в отдельный хедер и подключать её к модулям, где требуется не пробовали?
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
15.03.2013, 07:11     Унаследование классов #6
Цитата Сообщение от pEntity Посмотреть сообщение
У нас конечно ошибка: Использование унаследованных членов не допускается.
Допускеается. Унаследованный член при наследовании становится членом наследующего класса и на него полностю распространяются все обычные правила обращения к членам. Но есть одно исключение: если в предке этот член private, то прямое обращение к нему из потомка не возможно.
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
15.03.2013, 20:41  [ТС]     Унаследование классов #7
MrGluck,taras atavin,можно пример?

Добавлено через 46 секунд
или одинаковые.
Тебе просто вызвать функцию, созданную в другом срр файле что ли?
Да.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
15.03.2013, 20:57     Унаследование классов #8
Цитата Сообщение от pEntity Посмотреть сообщение
Тебе просто вызвать функцию, созданную в другом срр файле что ли?
Да.
C++
1
2
3
4
5
//file1.cpp
int global_number;//глобальная переменная
void func(){//внешняя функция
 
}
C++
1
2
3
4
5
6
7
//file2.cpp
void func();//для функций написать прототип
extern int global_number;//для переменных написать extern объявление 
int main(){
  func();//вызвать функции как обычно
  global_number=0;//использовать переменные как обычно
}
если функции используются множеством файлов, удобно их прототипы выносить в заголовок
C++
1
2
3
//file_header1.h
void func();//для функций написать прототип
extern int global_number;//для переменных написать extern объявление
C++
1
2
3
4
5
6
//file2.cpp
#include "file_header1.h"
int main(){
  func();//вызвать функции как обычно
  global_number=0;//использовать переменные как обычно
}
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
15.03.2013, 21:50  [ТС]     Унаследование классов #9
Я это и использую. Но я же говорю проект очень большой. Мне таких прототипов придется делать штук 15. Это ведь не гуманно. Разве нет более лучшего решения ? Просто так выйдет быдло код.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
15.03.2013, 22:05     Унаследование классов #10
что значит "быдлокод"?
сколько функций - столько и прототипов. Пример проблемы то можно увидеть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2013, 00:36     Унаследование классов
Еще ссылки по теме:

Иерархия классов - C++
Здравствуйте! Есть следующее задание на С++ (лаб. работа) 1. Определить иерархию классов . 2. Определить в классе статическую...

Видимость классов - C++
Как сделать что бы один класс мог работать с классом который объявлен после него но использует его. class Cmd1 { Cmd1* var1; ...

создание классов - C++
создать класс который осуществляет вывод на экран таблицы умножения с++

Шаблоны классов - C++
Почему не правильно считает? #include using namespace std; template &lt;class T&gt; class Boxe { public: T ab; T bb;

Обявление классов - C++
Вобщем получалась такая ситуация, есть 2 класса class A { public: SomeMethod( B *param ); } class B { public: ...


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

Или воспользуйтесь поиском по форуму:
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 386
16.03.2013, 00:36  [ТС]     Унаследование классов #11
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
#include <extdll.h>
#include <meta_api.h>
#include "ZBM3_Precache_Init.h"
 
 
 
void PRECACHE_Init( )
{
    PRECACHE_MAPS( );
    PRECACHE_AMBIENCE( );
    PRECACHE_INFECTION( );
    PRECACHE_AMBIENCE_SOUNDS( );
    PRECACHE_HUNTER( );
    PRECACHE_GHOST( );
    PRECACHE_TRAP( );
    PRECACHE_DOCTOR( );
    PRECACHE_DEIMOS( );
    PRECACHE_ZOMBIES( );
    PRECACHE_ZOMBIES_SOUND( );
    PRECACHE_HUMANS( );
    PRECACHE_DEATMACH( );
    PRECACHE_EFFECTS_KILLER( );
    PRECACHE_EFFECTS_INFECT( );
    PRECACHE_HERO( );
    PRECACHE_HEROIN( );
    PRECACHE_EVOLUTION( );
    PRECACHE_MORALE( );
    PRECACHE_DROP_STRIP( );
    PRECACHE_TEAM_SCORING( );
    PRECACHE_ITEMS( );
    PRECACHE_GRENADE( );
}
Разве это нормально? Мб и нормально,но почему-то я думаю есть лучшее решение.
Yandex
Объявления
16.03.2013, 00:36     Унаследование классов
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru