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

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

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

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

15.03.2013, 02:21. Просмотров 1600. Ответов 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;
}
У нас конечно ошибка: Использование унаследованных членов не допускается.

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


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

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

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов - C++
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение, демонстрирующее работу с коллекцией объектов...

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов) - C++
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как вынести методы из классов Panel и...

Реализация отношения классов типа двунаправленная ассоциация, UML, порядок объявления классов, неполный класс - C++
Доброго времени суток! Осваивая UML, решил реализовать отношение двунаправленной ассоциации по диаграмме: У одного владельца...

Преобразования объектов классов в объекты других классов - C++
Задача типа обмен валют. Нужно конвертировать старый фунт стерлинг(фунт, шиллинг и пенсы) в доллары и обратно, по курсу 1 фунт = 50...

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

10
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,018
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();
}
0
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 401
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()
{
}
и тд.

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

Добавлено через 46 секунд
или одинаковые.
Тебе просто вызвать функцию, созданную в другом срр файле что ли?
Да.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 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;//использовать переменные как обычно
}
1
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 401
15.03.2013, 21:50  [ТС] #9
Я это и использую. Но я же говорю проект очень большой. Мне таких прототипов придется делать штук 15. Это ведь не гуманно. Разве нет более лучшего решения ? Просто так выйдет быдло код.
0
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,926
Записей в блоге: 1
15.03.2013, 22:05 #10
что значит "быдлокод"?
сколько функций - столько и прототипов. Пример проблемы то можно увидеть?
0
pEntity
11 / 6 / 1
Регистрация: 12.12.2012
Сообщений: 401
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( );
}
Разве это нормально? Мб и нормально,но почему-то я думаю есть лучшее решение.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2013, 00:36
Привет! Вот еще темы с ответами:

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Сложение классов - C++
Есть некоторые классы class A {/*...*/}; class B{/*...*/}; class C { A a; B b; }; Как перегрузить +, чтобы...

Функции 2-х классов! - C++
Как из функции класса А, вызвать функцию класса Б?? подскажите пожалуйста!

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


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
16.03.2013, 00:36
Ответ Создать тему
Опции темы

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