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

разобраться с ошибкой с3867 (msvs 2012) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ проконсультируйте пожалуйста меня с программой: http://www.cyberforum.ru/cpp-beginners/thread1032222.html
у меня эта программа всё, вроде правильно, считает . Но: работает только тогда, когда ввожу икс: положительное и дробное. С отрицательными не хочет. Подскажите, в чем может быть проблема?? Сама суть программы такова:http://www.cyberforum.ru/attachment.php?attachmentid=338527&stc=1&d=1386427879 (вот здесь текст задачи, в ссылке). Код Программы следущий: #include "stdafx.h" #include...
C++ Алгоритмы поиска. "Блудный сын" Прошу помощи тех, кто может помочь) Имеется клеточное поле размером N*M. Из каждой клетки можно перемещаться в одну из соседних, если она есть (вверх, вправо, вниз, влево). Коммивояжер стартует из какой-то клетки. Может ли он обойти все клетки и вернуться в исходную? Написать программу, которая даёт ответ на этот вопрос. Помогите пожалуйста! Может, кто-то разбирается в таких задачах Буду... http://www.cyberforum.ru/cpp-beginners/thread1032219.html
Сумма элементов строки, где расположен элем. с наименьшим значением C++
Помогите написать код к задачи. Дан двумерный динамический массив действительных чисел. Определить сумму элементов строки, в которой расположен элемент с наименьшим значением. Добавлено через 1 час 16 минут Помогите пожалуйста!
C++ Парсер PDF файлов
Кто нибудь делал подобное? Может есть исходники? Готовые решения?
C++ Большое время работы http://www.cyberforum.ru/cpp-beginners/thread1032211.html
Добрый вечер, форумчане! Возникла проблема : у программы чтения файла очень большой runtime(пишу на codeblocks). Что с этим делать? #include <fstream> #include <iostream> #include <string>
C++ Иерархия классов Пацаны срочно нужна ваша помощь!! Надо создать простую программу в с++ на тему БИБЛИОТЕКА, чтобы там обрабатывались ниже приведённые действия имя – char* автор – char* стоимость – float подробнее

Показать сообщение отдельно
DU
1478 / 1054 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
08.12.2013, 01:26     разобраться с ошибкой с3867 (msvs 2012)
void - ами и с методами класса
это означает и с указателями на методы и с указателями на свободные функции? или что-то другое?

я не совсем понял задачу в целом. если вам в какую-то функцию или метод нужно передать что-то, что
можно выполнить, то есть классический подход (смотрите паттерны проектирования Command, Strategy):
То, что нужно выполнить оформляется в абстрактного класса и в потомках уже делается конкретная реализация.
C++
1
2
3
4
class Command
{
   virtual void Execute() = 0;
};
В наследниках вы реализуете Execute вызовом свободной функции или вызовом метода какого-то объекта или еще как захотите.
В функцию setProcess передается указатель на Command, а внутри происходит вызов Execute.

В новом стандарте появился шаблон std::function, которым можно заменить подобные абстрактные классы с
одной функцией. И чтобы это заработало, сигнатура вашего setProcess должна быть такой:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// вариант для свободной функции, для метода - аналогично:
void setProcess(std::function<void ()> command)
{
  ...
  command();
  ...
}
 
// и дальше где-то в коде можно вызывать
  std::function<void ()> func;
  func = &MyFunction;
  setProcess(func);
 
   // или без промежуточных объектов сразу:
  setProcess(&MyFunction);
  setProcess(std::bind(&Test::Foo1, &test1));
  setProcess([&test2] { test2.Foo2(); });
Что такое std::bind - лучше доки почитать.
если вкратце - то это функция, которая возвращает объект с перегруженным оператором ().
при вызове этого оператора в примере происходит вызов метода у объекта, которые были
переданы как аргументы в функцию std::bind
 
Текущее время: 13:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru