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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ VisualStudioExpress2012Desktop compiller http://www.cyberforum.ru/cpp-beginners/thread1183572.html
VisualStudioExpress2012Desktop какой компилятор использовать, опишите кратко и емко способ подключения компилятора к этой среде разработки. Я не устанавливал еще компилятор, сразу после установки VisualStudio открыл новый проект_1 и создал исходник cpp main.cpp, который нужно компилировать, но при попытке отладки выходит сообщение: не найден файл проект_1.exe, не удается запустить программу. При...
C++ Помогите найти ошибку в коде: не выводит файлы. Помогите пожалуйста с файлыми... не хрчет выводить. #include <stdio.h> #include <string.h> #include <conio.h> #include <iostream.h> #include <iomanip.h> #include <fstream.h> http://www.cyberforum.ru/cpp-beginners/thread1183523.html
Нарушение доступа C++
void FilterStamp() { char ch; cout<<"Введите Да или Нет: "; scanf_s("%s",ch); cout<<endl; l1=first; while(l1!=0) { if(strcmp(ch,l1->x.AccStamp())==0)
C++ Как вернуть обратно к switch
// ConsoleApplication13.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <Windows.h> using namespace std; void nod(int x, int y);
C++ Нарушение прав доступа при записи http://www.cyberforum.ru/cpp-beginners/thread1183502.html
void FilterStamp() { char ch; cout<<"Введите Да или Нет: "; scanf_s("%s",ch); cout<<endl; l1=first; while(l1!=0) { if(strcmp(ch,l1->x.AccStamp())==0)
C++ Реализовать шаблон класса vector, реализующий динамический массив Реализовать шаблон класса vector, реализующий динамический массив. Определить 2 объекта класса vector и внешнюю функцию, выполняющую перемещение из первого объекта во второй первых n элементов. задачу реализовать просто как шаблонный класс. подробнее

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

Когда-то давно делал работу в 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 (проверяет, что объект является "представителем" или наследником класса или интерфейса)...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru