Форум программистов, компьютерный форум 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 для работы с моделями экранных окон.В качестве полей задаются:заголовок окна,координаты левого верхнего угла,размер по горизонтали,размер по вертикали,состояние...
C++ Найти уравнение прямой, проходящей через точку А
Найти уравнеие прямой (в форме альфа*x+бета*y+гамма=0),проходящей через точку А(X1,Y1) перпендикулярно к прямой ax+by+c=0. Пожалуйста помогите написать программу.
C++ Узнать какая кнопка была нажата SDL2.0 http://www.cyberforum.ru/cpp-beginners/thread1065234.html
Привет, как в этом примере узнать какая кнопка была нажата, я хочу сделать для каждой кнопки отдельное действия, но не могу понять, как узнать какая кнопка была нажата Код: /*This source code...
C++ Определить, можно ли представить число в виде суммы двух квадратов натуральных чисел Дано натуральное число n.Определить,можно ли представить его в виде суммы двух квадратов натуральных чисел.Если да,то найти все пары x,y такие,что n=x^2+y^2 (x<=y). Очень нужна ваша помощь,помогите... подробнее

Показать сообщение отдельно
hoggy
6672 / 2856 / 491
Регистрация: 15.11.2014
Сообщений: 6,370
Завершенные тесты: 1
21.09.2015, 18:56
Цитата Сообщение от daslex Посмотреть сообщение
Вовнутрь функции передается функция., а должен был указатель на неё. Т.е. созданный указатель, который указывает на foo должен был передаться вовнутрь foo., а не foo вовнутрь foo.
ну на самом деле передача foo(foo);
это тоже самое, что и foo(&foo);

следущий пример иллюстрирует это положение:

http://rextester.com/BICQ84301

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
46
47
48
49
50
51
52
53
#include <iostream>
#include <functional>
 
class recursivePointer
{
    typedef std::function<void(const size_t)> 
        functor;
public:
    template<class T> recursivePointer(T&& v)
        :mCaller( std::bind(v, v, std::placeholders::_1) )
    {}
    
    recursivePointer(const functor& v)
        :mCaller(v)
    {}
    recursivePointer(functor&& v)
        :mCaller( std::move(v) )
    {}
    
    void operator()(const size_t depth)const 
        { mCaller(depth); }
    
    operator const functor&()const
        { return mCaller; }
    
private:    
    functor mCaller;
};
 
void foo(const recursivePointer& f, const size_t depth)
{
    if(depth == 0)
        return;
    
    std::cout<<"depth recursieve: "<< depth << '\n';
    f(depth - 1);
}
 
int main()
{
    std::cout << "Hello, world!\n";
    
    const auto pFunc = recursivePointer(&foo);
    
    foo(pFunc, 10);
    std::cout<< "--------------\n";
    
    foo(foo, 10);
    std::cout<< "--------------\n";
    
    foo(&foo, 10);
    std::cout<< "--------------\n";
}
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru