Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
anubis1768
4 / 4 / 0
Регистрация: 23.02.2013
Сообщений: 151
#1

Как правильно кастовать указатель на константную ф-ю - C++

25.02.2014, 19:21. Просмотров 335. Ответов 2
Метки нет (Все метки)

Здравствуйте. Вот рабочий пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
struct foo
{
    void f(int a, int b) { std::cout << "foo(int, int) called\n"; }
    void f(char *a, double b) { std::cout << "foo(char*, double) called\n"; }
};
 
int main()
{
    auto callback = (void(foo::*)(int, int)) &foo::f;
    return 0;
}
Все компилируется. Но если сделать первую ф-ю константную, то уже компилятор ругается. Куда нужно всунуть этот const чтобы с константной ф-ей компилировалось?

Добавлено через 7 минут
up...

Добавлено через 11 минут
Проблема актуальна
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2014, 19:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно кастовать указатель на константную ф-ю (C++):

Как правильно удалять выделенную память под указатель на указатель? - C++
есть код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; void sort_1(const...

Как правильно передавать указатель на функцию? - C++
Класс для очереди typedef unsigned size_t; template&lt;typename T&gt; struct List { T data; struct List&lt;T&gt;* next; ...

Не знаю как правильно передать указатель - C++
В общем для начала приложу код ( не пугайтесь , что придется много читать , из этого кода изучить нужно лишь 2 функции и данные структуры )...

как сделать правильно указатель на первую функцию - C++
#include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;conio.h&quot; int F(int n) { if(n==0) return 1; if(n==1) return 1; return...

Как правильно передать массив через указатель? - C++
#pragma once #include &lt;vector&gt; class TOMathModel { public: TOMathModel(void); ~TOMathModel(void);

как такое правильно писать? это ссылка на указатель? - C++
#include &lt;iostream&gt; using namespace std; char *chch2 = &quot;hello&quot;; char*&amp; f() { char *&amp;chch3 = chch2; return...

2
retmas
Жарю без масла
864 / 746 / 168
Регистрация: 13.01.2012
Сообщений: 1,702
25.02.2014, 19:25 #2
C++
1
(void (foo::*)(int, int) const)
2
castaway
Эксперт С++
4916 / 3024 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
25.02.2014, 19:25 #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
struct foo
{
    void f(int a, int b) const { std::cout << "foo(int, int) called\n"; }
    void f(char *a, double b) { std::cout << "foo(char*, double) called\n"; }
};
 
int main()
{
    auto callback = (void(foo::*)(int, int) const) &foo::f;
    return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2014, 19:25
Привет! Вот еще темы с ответами:

Как правильно передать в функцию указатель на двумерный массив? - C++
Сабж #include &lt;windows.h&gt; #include &lt;stdio.h&gt; using namespace std; //ОТ безысходности сделал матрицу глобальной int A = {2,...

Не могу понять, как правильно передать указатель на объект в файл - C++
Есть вектор v, который надо отсортировать. Есть класс MergeSort, который это должен делать, он содержит в качестве параметра указатель на...

Как получить ссылку на указатель или указатель на указатель в массиве? - C++
В процессе реализации сортировки пузырьком натолкнулся на такую проблему: как поменять значения указателей, передаваемых в функцию. Если...

Функция возвращает константную ссылку - C++
Можно ли в таком случае возвращать константную ссылку? Не будет никакой опасности? Ведь в функции вроде создается временный объект double...


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

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

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