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

C++

Войти
Регистрация
Восстановить пароль
 
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
#1

Головоломка - C++

26.11.2010, 00:16. Просмотров 783. Ответов 6
Метки нет (Все метки)

Скучно как-то на форуме, нету интересных задач. Вот решил для общего развития задать "загадку":
как на этапе компиляции, пользуясь средствами С++, определить является ли класс Б потомком класса А :cofee2:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
26.11.2010, 00:29     Головоломка #2
Manjak, в смысле, получить ошибку?
Ну тогда вот что первое в голову приходит:
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct A {};
 
struct B : A {};
 
struct C {};
 
int main (int argc, char * const argv[]) {
    A * b = new B; // Порядок.
    A * c = new C; // Ошибка.
 
    return 0;
}
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
26.11.2010, 00:42  [ТС]     Головоломка #3
Не ошибку, а именно узнать, что, например, параметр шаблона - это класс, который реализует нужный интерфейс.
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
26.11.2010, 00:55     Головоломка #4
Тогда я не понимаю, что значит "на этапе компиляции"...
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
26.11.2010, 01:16  [ТС]     Головоломка #5
Это значит, что я могу, например, в своем шаблоне держать булевую переменную значение которой какраз и указывает на то, что класс-параметр шаблона унаследован от целевого класса и могу ее использовать например для организации какой-то логики.
CheshireCat
Эксперт С++
2891 / 1240 / 78
Регистрация: 27.05.2008
Сообщений: 3,345
26.11.2010, 11:02     Головоломка #6
И что здесь "головоломного"? Задача давным-давно решена Андреем Александреску, и разобрана в его "Современном проектировании на C++", глава 2.7 Распознавание конвертируемости и наследования на этапе компиляции.
К чему изобретать собственный велосипед? Только из любопытства разве что.....
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.11.2010, 12:08     Головоломка
Еще ссылки по теме:

Головоломка о путешествии коня C++
C++ Головоломка
C++ Головоломка Хитори
C++ Головоломка "Двоичный код"
Головоломка C++

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

Или воспользуйтесь поиском по форуму:
Manjak
269 / 175 / 7
Регистрация: 12.03.2010
Сообщений: 494
26.11.2010, 12:08  [ТС]     Головоломка #7
Решение задачи и у Страуструпа, и у Александреску, и в других работах описано, а заниматься таким можно просто чтобы размять мозги
Yandex
Объявления
26.11.2010, 12:08     Головоломка
Ответ Создать тему
Опции темы

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