Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Как это перевести в нормальное выражение? x /= x & -x; Я так понял то что "/=" это значит поделить. "-x" это минус, но только от чего??? https://www.cyberforum.ru/ cpp-beginners/ thread1291246.html C++ рекурсия не знаю как назвать сложения сумма функция C++
нужна рекурсивная функция которая решает введенную функцию в char, например пользователь ввел 5+6(8+2+4) , заметте перед скобкой ( он не ввел умножение * ,, в массиве он хранится как {'5', '6', '(', '8', '+', '2' , '+' , '4', ')'} например ответ 89
C++ Не могу записать прочитать пробелы https://www.cyberforum.ru/ cpp-beginners/ thread1291211.html
Доброго времени суток!) Только начал С++... Пишу программу, столкнулся с проблемой при чтении из файла.. А именно при чтении не считываются пробелы, ка можно это исправить? Вот код.. using namespace std; int main() { int n=0; char a; string lol;
C++ Преобразование типов и методы класов https://www.cyberforum.ru/ cpp-beginners/ thread1291209.html
Есть задача: 1)Создать класс Triangle, разработав следующие элементы класса: поля: int a, b, c; 2)Конструктор, позволяющий создать экземпляр класса с заданными длинами сторон 3)Методы, позволяющие: Вывести длины сторон треугольника на экран Вычислить периметр треугольника Вычислить площадь треугольника Операции *: одновременно умножить поля a, b, c на скаляр ...
C++ Вставить число К1 после всех элементов, больших заданного числа, а число К2 – перед всеми элементами, кратными
Вставить число К1 после всех элементов, больших заданного числа, а число К2 – перед всеми элементами, кратными трем. void exercise_3_2() { int i; int size_of_array=10; int last_element; int second; int even; int k1= 4, k2= 7; int temp = 23;
C++ Заполнение массива Добрый день. Объясните,пожалуйста, следующий момент. Есть кусок кода: void fill(struct member *p){ printf("\nFill your name please: "); gets((*p).firstname); cout<<"\nEnter u'r lastname: "; gets((*p).lastname); cout<<"\nEnter u'r age: "; https://www.cyberforum.ru/ cpp-beginners/ thread1291196.html
C++ Составить программу вычисления значения функции https://www.cyberforum.ru/ cpp-beginners/ thread1291191.html
Привет. Помоги пожалуйста составить программу вычисления значения функции f(x,y) для заданных значений a, b, c и произвольного x с автоматическим выбором необходимой формулы: f(x, y)=\begin{cases} y^3-1 & \text{ , } \left|y \right|\le 1 \\ 2y-1 & \text{ , } 1 \lt \left|y \right|\le 2 \\ \frac{5}{8}y-1 & \text{ , } \left|y \right| \gt 2 \end{cases} y=x^2+x-1
C++ Описать класс для вычисления суммы
Помогите пожалуйста написать программу. Описать класс, используя различные варианты доступа к данным (для реализации выбрать самостоятельно любые три варианты): все исходные данные закрыты; • искомый результат – не элемент класса; • искомый результат – элемент класса и закрыт; • искомый результат – элемент класса и открыт; Для каждого варианта применить верные варианты вывода на печать...
C++ Не работает randomize в Dev C++ https://www.cyberforum.ru/attachment.php?attachmentid=450146&stc=1&d=1415027894 https://www.cyberforum.ru/ cpp-beginners/ thread1291144.html C++ Обработка отдельных строк (столбцов) матрицы и работа с диагоналями. Двумерные массивы https://www.cyberforum.ru/ cpp-beginners/ thread1291137.html
Ввести целочисленный двумерный массив ANxM, вывести его. Найти сумму положительных угловых элементов. Найденной суммой заменить строку содержащую минимальный элемент и столбец, содержащий максимальный элемент. Не могу разобраться, как это будет выглядеть, можете показать, как будет выглядеть данная задача? Желательно указать, где что происходит, что бы я понимал... Только разбираюсь в...
C++ Написать программу, которая считает частоту биграммы текста
Нужно написать программку,которая считает частоту биграммы текста. Примерно тоже самое должно получиться..Помогите,пжл)
C++ процедура ChessBoard(M,N,A,S,P) https://www.cyberforum.ru/ cpp-beginners/ thread1291109.html
Описать процедуру ChessBoard(M,N,A,S,P) вычисляющую по матрице вещественных чисел А размера MxN(которая раскрещена как шахматное поле: левый верхний угол черного цвета) S как сумму элементов на черных клетках и Р как произведение на белых S и P выходные параметры
Вездепух
Эксперт CЭксперт С++
11694 / 6373 / 1723
Регистрация: 18.10.2014
Сообщений: 16,057
03.11.2014, 20:48 0

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++ - Ответ 6803550

03.11.2014, 20:48. Показов 3720. Ответов 4
Метки (Все метки)

Лучший ответ Сообщение было отмечено porshe как решение

Решение

Цитата Сообщение от porshe Посмотреть сообщение
я вообще если честно не понимаю, почем программа не "падает"
Ваша код бессмысленен. Указатель на обычную функцию и указатель на метод класса - это объекты совершенно разной природы. В вашу функцию 'start' невозможно передать указатель на метод класса. А то, что вы его туда силой "вбили" через 'reinterpret_cast' приводит только к неопределенному поведению. Заниматься каким-то анализом этого кода на тему "чего и почему" - пустая трата времени.

Я не знаю, в чем состоит задача, но если вам нужно "свести вместе" указатели на обычные функции и указатели на методы классов, то сделать это на уровне языкового ядра (core C++ language) не получится. Надо переходить к функциональным объектам и либо делать вашу функцию шаблонной, либо работать через std::function.

Добавлено через 11 минут
К примеру

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
#include <functional>
#include <iostream>
 
void start(const std::function<void ()>& f)
{
  f();
}
 
class C
{
public:
  C() : i(0) {}
  void myfunc()
  {
    std::cout << "C::myfunc()" << std::endl;
    i++;
  }
  int i;
};
 
int main()
{
  C obj;
  std::cout << obj.i << std::endl;
  std::function<void()> f = std::bind(&C::myfunc, &obj);
  start(f);
  std::cout << obj.i << std::endl;
}


Вернуться к обсуждению:
Функция, получающая указатель на обычную функцию, получает указатель на метод класса C++
1
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.11.2014, 20:48
Готовые ответы и решения:

В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель
Друзья! Всем привет. Вот код: class otets { public: void f (void (otets::*p)()); ...

Функция, получающая подстроку, возвращает испорченный указатель на строку
Пытаюсь выделить подстроку в Microsoft Visual C++ 2013, чтобы убрать путь к файлу и оставить только...

Как передать указатель на функцию через метод класса ?
typedef void (*FuncCallback)(float* flValue); Пробовал по всякому и ни как: Class.CallFunc...

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив)
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая...

4
03.11.2014, 20:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.11.2014, 20:48
Помогаю со студенческими работами здесь

Как передать в метод класса Menu указатель на метод дочернего класса?
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: ...

Функция, принимающая указатель и число байт и выделяющая память под указатель
Здравствуйте. Задача легкая, но почему-то завис Нужно написать функцию, принимающую указатель и...

Функция принимает указатель на void и возвращает указатель на int
Запишите прототип функции, которая принимает указатель на void и возвращает указатель на int.

Деревья С++ (функция, которая получает указатель на корень дерева и возвращает длину самой длинной ветки на дереве)
Здравствуйте! Помогите, пожалуйста, в написании функции ,которая получает указатель на корень...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru