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

Функция должна принять указатель на саму себя - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Хранение экземпляров классов-наследников, и вызов их методов http://www.cyberforum.ru/cpp-beginners/thread1065275.html
Столкнулся с проблемой. Есть класс-родитель и 2 класса-наследника. class Base { public: void baseFunc(); }; class Derived1 : public Base
C++ Получить все возможные варианты комплектов книг. Исправить код #include<iostream.h> using namespace std; int main() { int i=0, j=0, k=0, m=0; while(i<7) { http://www.cyberforum.ru/cpp-beginners/thread1065260.html
Определить структуру Модель Виндовс для работы с моделями экранных окон.В качестве полей задаются C++
Определить структуру Model Window для работы с моделями экранных окон.В качестве полей задаются:заголовок окна,координаты левого верхнего угла,размер по горизонтали,размер по вертикали,состояние "видимое/невидимое",состояние"с рамкой/без рамки".Координаты и размеры указываются в целых числах.Кроме функций read и print реализовать следующие функции:передвижение окна по горизонтали,по...
C++ Найти уравнение прямой, проходящей через точку А
Найти уравнеие прямой (в форме альфа*x+бета*y+гамма=0),проходящей через точку А(X1,Y1) перпендикулярно к прямой ax+by+c=0. Пожалуйста помогите написать программу.
C++ Узнать какая кнопка была нажата SDL2.0 http://www.cyberforum.ru/cpp-beginners/thread1065234.html
Привет, как в этом примере узнать какая кнопка была нажата, я хочу сделать для каждой кнопки отдельное действия, но не могу понять, как узнать какая кнопка была нажата Код: /*This source code copyrighted by Lazy Foo' Productions (2004-2013) and may not be redistributed without written permission.*/ //Using SDL, SDL_image, standard IO, and strings #include <SDL.h> #include <SDL_image.h>
C++ Определить, можно ли представить число в виде суммы двух квадратов натуральных чисел Дано натуральное число n.Определить,можно ли представить его в виде суммы двух квадратов натуральных чисел.Если да,то найти все пары x,y такие,что n=x^2+y^2 (x<=y). Очень нужна ваша помощь,помогите пожалуйста. подробнее

Показать сообщение отдельно
DrOffset
6459 / 3833 / 885
Регистрация: 30.01.2014
Сообщений: 6,628
21.09.2015, 18:23     Функция должна принять указатель на саму себя
daslex,
Без хаков с приведением типов и используя лишь функции С++ это не реализуемо. Концептуально.
По очень простой причине. Функции в С++ не объекты первого класса. В этом нет ничего удивительного, т.к. концепция функции унаследована из С, который не задумывался как объектно-ориентированный язык.
Зато С++ предоставляет альтернативный механизм - функторы.
Функторы - это функциональные объекты, и они являются объектами первого класса. Поэтому такой код в С++ будет работать и в какой-то степени решает поставленную задачу:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct Func
{
    void operator()(Func & func, int i = 0)
    {
        if(i < 10) // чтобы разорвать рекурсию.
        {
            func(*this, i + 1);
        }
    }
};
 
 
int main()
{
    Func f;
    
    f(f);
}
 
Текущее время: 18:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru