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

Передача указателя функции класса A в класс B - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ абстрактный базовый класс http://www.cyberforum.ru/cpp-beginners/thread161310.html
люди подскажите.есть абстрактный базовый класс можно ли в нем определить конструктор копирования? написал в компиляторе,получается,что можно,но не понимаю почему? если нельзя создавать объект абстрактного класса,то как проходит такое объявление Abk::Abk(const Abk &) ??? Abk-абстрактный базовый класс
C++ Обработка адреса DNS и IP из коммандной строки Имеется ли функция которая исходя из полученного аргумента будет использовать подходяшую функцию? Т.е. если argv == "localhost" то будет использоваться: clientserver.sin_addr.s_addr = inet_addr(argv); а если argv == "127.0.0.1" то: clientserver.sin_addr.s_addr = htons(atoi(argv)); И если нет то каким образом лучше проверить аргумент, по последнему знаку? Т.е. если домейн то последняя будет... http://www.cyberforum.ru/cpp-beginners/thread161305.html
C++ шифрование файлов произвольного типа
возникла проблема при шифровании: txt файлы шифрует нормально но остальные типы(png) не хочет вот код файл SD.h #include <stdio.h> #ifndef __SD #define __SD class SD { public:
Переменная в динамической памяти C++
class SimpleCircle { public: SimpleCircle (); //Basic constructor SimpleCircle (int radius); //Constructor with parameters void SetRadius (int r); //Radius set function void operator++ () {++itsRadius;} int operator++ (int); //Postfix operator int * itsRadius = new int; };
C++ С базовым курсом разобрался, переходим на оконные приложения. http://www.cyberforum.ru/cpp-beginners/thread161238.html
Пол года долбал базовый курс (все о консоли) и считаю что пора перейти на уровень выше. Нашел на майкрософте маленький гайд по созданию оконных приложений. Ниже будет оконное приложение представлено в том гайде которое выводит "Hello world!". Очень прошу помочь разобраться что к чему. В дальнейшем развитии темы выйдет не плохой учебник... // GT_HelloWorldWin32.cpp // compile with:...
C++ самое длинное слово #include <iostream> using namespace std; int main() { char line; int cur = 0, max = 0, index = 0, i; cin >> line; for(i = 0;; i++) { if(line == ' ' || line == '\0') подробнее

Показать сообщение отдельно
CyBOSSeR
Эксперт C++
2299 / 1669 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
02.09.2010, 21:27     Передача указателя функции класса A в класс B
Вариант решения с помощью boost::function, boost::bind:
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
#include <windows.h>
#include <process.h>
#include <iostream>
#include <boost/bind.hpp>
#include <boost/function.hpp>
 
struct Foo {
  int Bar(int arg) {
    return arg * arg;
  }
};
 
void thread_function(void* p) {
  boost::function<int (int)> functor = *static_cast<boost::function<int (int)>*>(p);
 
  std::cout << functor(100) << std::endl;
}
 
int main() {
  boost::function<int (int)> functor = boost::bind(&Foo::Bar, Foo(), _1);
 
  HANDLE hThread2 = reinterpret_cast<HANDLE>(_beginthread(thread_function, 0, &functor));
  ::WaitForSingleObject(hThread2, INFINITE);
 
  return 0;
}
Пример будет работать аналогично, если thread_function будет статической функцией любого класса.
 
Текущее время: 11:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru