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

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

Войти
Регистрация
Восстановить пароль
 
kilik
5 / 5 / 1
Регистрация: 15.11.2010
Сообщений: 58
#1

Абстрактные классы наследия. - C++

17.10.2011, 20:17. Просмотров 362. Ответов 4
Метки нет (Все метки)

Ребят подскажите пожалуйста как мне написать чтобы в классе С виртуальные функции класса B заменялись функциями класса А. можно ли так сделать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A{
    void metod_1(){};
    void metod_2(){};
    void metod_3(){};
};
class B{
    virtual void metod_1()=0;
    virtual void metod_2()=0;
    void metod_4(){};
};
 
class C:public A,public B{
 
    void metod_5(){};
};
 
int main(){
    C test;//ошибка нельзя создать обект абстрактного класса 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2011, 20:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Абстрактные классы наследия. (C++):

Абстрактные классы - C++
Ребята! Помогите с таким делом. Мне дали задание создать абстрактный класс Автомобиль, классы наследники: гоночный автомобиль, асфальтный...

Абстрактные классы - C++
В общем есть у нас 2 абстрактных класса CA и CB и 2 дочерних от них класса CC и CD. Как сделать так чтобы CD наследовал CB поверх которого...

Абстрактные классы - C++
Помогите плиз, экзаменационное задание, а разобраться не могу с ним: Создать консольное приложение, в котором реализовать работу...

абстрактные классы - C++
Здрасте я при написании программы столкнулся с проблемой что немогу создать указатель на объект т.к. класс абстрактный прошу помогите...

Абстрактные классы - C++
Объясните пожалуйста почему это не работает и как исправить? cannot declare variable 'b1' to be of abstract type 'classB' because the...

Абстрактные классы - C++
Никак не могу понять смысл абстрактных данных.Ведь мы можем использовать и обычный класс,только абстракция запрещает создавать объекты.

4
Сыроежка
Заблокирован
17.10.2011, 20:55 #2
Цитата Сообщение от kilik Посмотреть сообщение
Ребят подскажите пожалуйста как мне написать чтобы в классе С виртуальные функции класса B заменялись функциями класса А. можно ли так сделать?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class A{
    void metod_1(){};
    void metod_2(){};
    void metod_3(){};
};
class B{
    virtual void metod_1()=0;
    virtual void metod_2()=0;
    void metod_4(){};
};
 
class C:public A,public B{
 
    void metod_5(){};
};
 
int main(){
    C test;//ошибка нельзя создать обект абстрактного класса 
    return 0;
}
Нужно сделать класс A производным от класса B и переопределить чисто виртуальные функции. Либо в самом классе С переопределить функции класса B включив в их тело вызов функций класса A.
1
kilik
5 / 5 / 1
Регистрация: 15.11.2010
Сообщений: 58
17.10.2011, 22:08  [ТС] #3
С первым способом разобрался.
C++
1
2
3
4
5
6
7
8
9
class B{
    ...
};
class A:public B{
    ...
};
class C:public A{
    ...
};
Можете показать на примере:
Цитата Сообщение от Сыроежка Посмотреть сообщение
в самом классе С переопределить функции класса B включив в их тело вызов функций класса A
0
hijacker7
20 / 20 / 1
Регистрация: 06.10.2011
Сообщений: 53
17.10.2011, 22:59 #4
Вот так. Только я классы A и B местами поменял для удобства
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class A{
    protected: // Или public
        virtual void metod_1() = 0;
        virtual void metod_2() = 0;
        void metod_3(){};
};
class B: public A{
    protected: // Или public
        virtual void metod_1(){}
        virtual void metod_2(){}
        void metod_4(){};
};
 
class C: public B{
 
    protected: // Или public
        virtual void metod_1(){
            B::metod_1();
        }
        virtual void metod_2(){
            B::metod_2();
        }
};
1
kilik
5 / 5 / 1
Регистрация: 15.11.2010
Сообщений: 58
17.10.2011, 23:38  [ТС] #5
спасибо за помощь
0
17.10.2011, 23:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2011, 23:38
Привет! Вот еще темы с ответами:

Абстрактные классы - C++
void _tmain() { const int lim = 100; MyFunction *pFunc ; int count = 0; pFunc = new My_Exp; pFunc = new Line; pFunc...

Абстрактные классы - C++
Народ, вопрос есть такой. Есть абстрактный класс class A { protected: int a; public: A(int b=0):a(b) {

абстрактные классы - C++
компилятор ругается когда я пытаюсь записать объект класса!!!! подскажите что я не правильно делаю!! #include <cstdlib> #include...

Абстрактные классы - C++
Помогите пожалуйста, сообразить не могу. Есть абстрактный класс. У него есть метод, чтение из файла. Есть производный от него класс....


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

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

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