Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 32
1

Управление объектом наследника через базовый класс

16.04.2016, 17:13. Просмотров 547. Ответов 3
Метки нет (Все метки)

Даны два класса. Класс A - базовый класс, B - класс наследник. В классе А 3 поля, в наследнике - еще 2.
Указателю на класс A присвоим адрес объекта B. Как изменить значение поля наследника, используя указатель на базовый класс.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2016, 17:13
Ответы с готовыми решениями:

Возможно ли вызвать метод наследника через указатель на базовый класс
Возможно ли вызвать метод наследника,через указатель на базовый класс, если он не определён как...

Базовый класс Deposit и три класса-наследника (банковские вклады)
Здравствуйте. История такова: есть базовый класс Deposit и три класса-наследника (банковские...

Класс: как обратиться к методу производного класса через итератор на базовый класс?
Есть абстрактный и два порожденных. Хочу создать например list<Base*> list1; затем добавляю себе...

Управление объектом формы1 через форму2 (почему не выходит)
Всем привет! Суть такова. Есть форма 1, она главная. Есть форма 2, где форма1 у неё родитель. Я...

3
27 / 26 / 16
Регистрация: 02.12.2013
Сообщений: 79
16.04.2016, 17:24 2
через виртуальные методы же
0
0 / 0 / 0
Регистрация: 12.10.2015
Сообщений: 32
16.04.2016, 17:28  [ТС] 3
Покажите пример, пожалуйста.
0
27 / 26 / 16
Регистрация: 02.12.2013
Сообщений: 79
16.04.2016, 18:02 4
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
#include <iostream>
 
struct BaseParent
{
    BaseParent():base_a1(0),base_a2(0),base_a3(0){}
    virtual ~BaseParent(){}
    virtual void SetChildField(int){}
    void SetA(int val){base_a1=val;}
    virtual void PrintChild(){
        std::cout<<"base_a:"<<base_a1<<std::endl;
    };
    int base_a1;
    int base_a2;
    int base_a3;
};
 
struct BaseParentPure
{
    BaseParentPure(){}
    virtual ~BaseParentPure(){}
    virtual void SetChildField_B(int)=0;    
};
 
struct ClassChild : public BaseParent, public BaseParentPure
{
    ClassChild():BaseParent(),BaseParentPure(){};
    virtual ~ClassChild(){}
    void SetChildField(int val)
    {
        a1=val;
    }
    void SetChildField_B(int val)
    {
        b = val;
    }
 
    virtual void PrintChild(){
        BaseParent::PrintChild();
        std::cout<<
            "a:"<<a1<<
            "\nb:"<<b<<         
            std::endl;
    };
 
    int a1;
    int a2;
    int b;
};
 
void main()
{
    BaseParentPure *pure_parente = new ClassChild();
    pure_parente->SetChildField_B(4);
    BaseParent * base_parent = dynamic_cast<BaseParent *>(pure_parente);
    base_parent->SetChildField(2);
    base_parent->PrintChild();
    delete pure_parente;
    
    std::cin.ignore();
 
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2016, 18:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Получить список классов, наследуемых объектом класса-наследника
Добрый день. Можно ли каким-то относительно простым способом, силами C++ или Qt, получить список...

Удаление массива через указатель на базовый класс
Всем привет! У меня тут возникли сомнения можно или нельзя удалять динамически созданный массив...

Как управлять наследниками через базовый класс
Всем привет)Есть вот одна проблема. Хочу управлять объекты через другие объекты. Допустим есть...

Запись объекта в файл через указатель на базовый класс
Можно ли при помощи write как-нибудь записать массив объектов производных классов в файл, используя...


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

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

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