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

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

Войти
Регистрация
Восстановить пароль
 
Deiron
26 / 26 / 1
Регистрация: 25.05.2009
Сообщений: 98
#1

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

21.05.2014, 16:19. Просмотров 294. Ответов 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 (проверяет, что объект является "представителем" или наследником класса или интерфейса)...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 16:19
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вызов специфических для потомка функций, не зная класса потомка (C++):

Не работает вызов виртуальной функции из класса потомка - C++
Есть код: #include <iostream> #include <vector> #include <list> #include <algorithm> #include <string> #include <sstream> ...

Вызов метода базового класса из класса-потомка - C++
Нужно вызывать из метода, переопределенного в потомке, соответствующий метод базового класса. При этом они являются виртуальными. Вот...

Реализовать оператор= для присваивания объекта класса-потомка объекту базового класса - C++
Есть два класса A и B, причем класс B является потомком A. Как реализовать следующее: obj_A = obj_B и obj_B = obj_A? Добавлено через 9...

Вызов из потомка конструктор родителя - C++
Как на с++ вызывается конструктор-родителя от конструктора-потомка. На яве так работает: package u; class A{ private int a,b,c;...

Вызов метода потомка через указатель на родителя - C++
Всем доброго времени суток, никак не придумаю, как провернуть такое: Пишу простенькую игру на cocos2dx. Есть первый класс, CNode - он...

Доступ к private переменной класса из его потомка - C++
Здравствуйте! Как получить доступ к закрытой переменной родительского класса в методе наследника? #include <stdio.h> class...

1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
21.05.2014, 16:36 #2
Цитата Сообщение от Deiron Посмотреть сообщение
Есть ли возможность реализации подобного кода в C++?
см. dynamic_cast
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2014, 16:36
Привет! Вот еще темы с ответами:

Не получается вызвать метод класса потомка через ссылку - C++
class Book { protected: char type; char title; char ISBN; char edition; char circulation; char...

Создать новое свойство (на основе имеющихся) для потомка, используя дружественные функции - C++
Здравствуйте, подскажите пожалуйста!Нужно создать новое свойство на основе имеющихся для потомка, используя дружественные функции, я...

Доступ к данным потомка - C++
Здравствуйте, коллеги! В теме почти что полный 0, потому прошу сделать скидку Есть базовый класс (CMyPoint), от него наследуют еще...

доступ к protected функции из потомка - C++
Есть базовый класс parent. У него есть метод func. Нужно дать потомкам parent, доступ к func у объектов типа parent. А всем остальным...


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

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

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