Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проверка наследования 
V
    Опции темы
retto
Дата 2.3.2010, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 30.10.2007
Где: Кривой Рог, Украи на

Репутация: нет
Всего: нет



искал искал и так током ничего не нашел.
вобщем есть некий интерфейс. от него наследуется n-е количество классов. как мне проверить наследуется ли класс от моего интерфейса?
что-то на подобии InheritsFrom в TComponent?
PM MAIL   Вверх
borisbn
Дата 2.3.2010, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 18
Всего: 135



Код

MyClass * p = dynamic_cast< MyClass * >( interfacePointer );
if (p )
{
 // MyClass наследуется от interfacePointer
}
else
{
 // MyClass не наследуется от interfacePointer
}



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
retto
Дата 2.3.2010, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 30.10.2007
Где: Кривой Рог, Украи на

Репутация: нет
Всего: нет



borisbn, эх, думал есть чето поприкольней. но всеравно большое спасибо smile

в данном случае ругается на dynamic_cast< MyClass * >
ошибка:
[C++ Error]: E2108 Improper use of typedef 'MyClass'

Это сообщение отредактировал(а) retto - 2.3.2010, 14:19
PM MAIL   Вверх
SenkraD
Дата 2.3.2010, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



retto,  вот те продвиннутый вариант
Код
//--------------------------------------------------------------------------------------------------
#include <iostream>
#include <iomanip>

//--------------------------------------------------------------------------------------------------
namespace Mpl
{
    

    template<class Base, class Derived>
    struct IsDerived
    {
    private:
        struct YesType { char a[1]; };
        struct NoType  { char a[10]; };

        static YesType    deduce(Base*);
        static NoType   deduce(...);        

    public:
        enum
        {
            value = (sizeof(deduce(static_cast<Derived*>(NULL))) == sizeof(YesType))
        };
    };
}

template<class B, class D>
bool isDerived(D const&)
{
    return (Mpl::IsDerived<B, D>::value != 0)? true : false;
}


struct A {};
struct B {};
struct C : A {};

//--------------------------------------------------------------------------------------------------
//
//
int main(int argc, char const* const argv[])
{
    B b;
    C c;

    std::cout << std::boolalpha;
    std::cout << isDerived<A>(b) << std::endl;
    std::cout << isDerived<A>(c) << std::endl;
    return 0;
}
//--------------------------------------------------------------------------------------------------





--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
retto
Дата 2.3.2010, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 30.10.2007
Где: Кривой Рог, Украи на

Репутация: нет
Всего: нет



всім дякую. 
тема закрыта smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.