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

Вызов специфических для потомка функций, не зная класса потомка - C++

Восстановить пароль Регистрация
 
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
21.05.2014, 16:19     Вызов специфических для потомка функций, не зная класса потомка #1
Доброго времени суток.

Когда-то давно делал работу в C#, а сейчас захотел повторить то же в C++.

Затык вот в чем.

был у меня код подобного вида:
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
    interface ICell
    {
        void SomeMethod();
    }
 
    interface IInteractable
    {
        void Interact();
    }
 
    class SimpleCell : ICell
    {
        public void SomeMethod() {//SomeMethod Implementation}
        }
    }
 
    class ActionCell : ICell, IInteractable
    {
        public void SomeMethod() {//SomeMethod Implementatiom
        }
        public void Interact() {//Interact Implementation
        }
    }
 
    class OtherActionCell : ICell, IInteractable
    {
        public void SomeMethod()
        {//SomeMethod Implementatiom
        }
        public void Interact()
        {//Interact Implementation
        }
    }
 
    class Tester
    {
        public void DoSomething(ICell SomeCell)
        {
            SomeCell.SomeMethod();
            if (SomeCell is IInteractable)
            {
                ((IInteractable)SomeCell).Interact();
            }
        }
    }
Это очень приблизительный код на C#, но суть, я полагаю, ясна.
у меня есть метод, который принимает любого наследника ICell. Что-то делает. Если этот наследник еще и IInteractable, то указатель приводится до типа IInteractable и вызывается его метод Interact. Есть ли возможность реализации подобного кода в C++? В C# для этого достаточно is (проверяет, что объект является "представителем" или наследником класса или интерфейса)...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 16:19     Вызов специфических для потомка функций, не зная класса потомка
Посмотрите здесь:

C++ Указатель на потомка в базовом классе.
C++ Вызов из потомка конструктор родителя
C++ Вызов функций класса Dictionary функциями дружественного класса
C++ Вызов функций дружественного класса
Вызов метода базового класса из класса-потомка C++
Доступ к данным потомка C++
C++ Не работает вызов виртуальной функции из класса потомка
доступ к protected функции из потомка C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.05.2014, 16:36     Вызов специфических для потомка функций, не зная класса потомка #2
Цитата Сообщение от Deiron Посмотреть сообщение
Есть ли возможность реализации подобного кода в C++?
см. dynamic_cast
Yandex
Объявления
21.05.2014, 16:36     Вызов специфических для потомка функций, не зная класса потомка
Ответ Создать тему
Опции темы

Текущее время: 03:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru