Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
lerka1996
2 / 2 / 0
Регистрация: 04.03.2015
Сообщений: 76
1

Реализовать функцию, сравнивающую указатели

14.10.2015, 22:41. Просмотров 1470. Ответов 5
Метки нет (Все метки)

реализовать функцию, которая принимает на вход два указателя на базовый класс Expression, и возвращает true, если оба указателя указывают на самом деле на объекты одного и того же класса, и false в противном случае (т.е. если оба указателя указывают на BinaryOperation, то возвращается true, а если один из них указывает на Number, а второй на BinaryOperation, то false).

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2015, 22:41
Ответы с готовыми решениями:

Написать функцию, сравнивающую 2 строки
Ваша задача написать функцию BOOL сравнить (символ * s1, Int size1, символ *...

Разработать функцию, сравнивающую две строки
Всем привет. Возникла у меня проблема, т.к. я дуб. Задание:Разработайте...

В функцию с переменным числом параметроы передать указатели на функцию
Добрый вечер. По заданию нужно в функцию с переменным числом параметров...

Указатели на функцию
1. arcsin(x^3) bool arcs(double *x) { if (*x**x**x<=1 && *x**x**x>=-1)...

указатели на функцию
Доброго времени суток! Вот читал про указатели на функцию, и столкнулся с такой...

5
ture
529 / 337 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
15.10.2015, 11:04 2
Лучший ответ Сообщение было отмечено lerka1996 как решение

Решение

Значит. Слизал я это где-то в инете. Идея в том, что бы сравнить указатели на таблицы виртуальных методов, которые у каждого (про папа, папа, сына, внучка) свои.
C++
1
2
3
4
5
bool check_equals(Expression const *left, Expression const *right)
{
    
    return ((void(*(*(&)[2]))(const Expression&))left)[0][0] == ((void(*(*(&)[2]))(const Expression&))right)[0][0];
}
Я не понимаю, что написал, но это валидно.
0
nmcf
6500 / 5735 / 2611
Регистрация: 14.04.2014
Сообщений: 24,464
15.10.2015, 11:23 3
Цитата Сообщение от ture Посмотреть сообщение
но это валидно
Для какого-то отдельно взятого случая. Нет гарантии, что будет везде работать.

Добавлено через 7 минут
C++
1
2
3
4
bool check_equals(Expression *left, Expression *right)
{
    return (dynamic_cast<Number *>(left) != NULL && dynamic_cast<Number *>(right) != NULL) || (dynamic_cast<BinaryOperation *>(left) != NULL && dynamic_cast<BinaryOperation *>(right) != NULL);
}
1
ture
529 / 337 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
15.10.2015, 11:27 4
nmcf, вот конкретно сейчас препод на доске разбирает код домашки "решить квадратное уравнение"... конечно я не понимаю, что делает dynamic_cast<тип *>
0
nmcf
15.10.2015, 11:31
  #5

Не по теме:

ture, ты школьник, что ли? Ну книжку почитай про dynamic_cast.

0
ture
529 / 337 / 206
Регистрация: 27.11.2014
Сообщений: 1,043
15.10.2015, 14:22 6
Ну, да
0
15.10.2015, 14:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2015, 14:22

Указатели на функцию
Используя указатели на функцию вычислить значение функции в точке х в...

Указатели на функцию
Вот имеется одна строчка кода: auto (*pFunc)(int, int) -&gt; int {nullptr}; ...

указатели на функцию
помогите пожалуйста решить k!/(1/2+1/3+...+1/(k+1)) используя указатели на...


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

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

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