Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2014, 19:43   #1
pj-infest
Пользователь
 
Аватар для pj-infest
 
Регистрация: 09.10.2010
Сообщений: 25
Восклицание Проблема с переопределением std::function<void()>

и снова доброго вечера всем форумчанам.
Возникла проблема с переопределением объектов std::function<void()>
и будто вещь это не особо сложная, а разобраться никак не получается.
есть у меня некоторый класс:
Код:
#include <functional>
class ProcessEventHandler
{
public:	
	std::function<void()> ProcessCrashHandler;
	std::function<void()> ProcessStopHandler;
};
с его помощью я буду реализовывать Колбек в следующий класс
Код:
class ProcessManager : public ProcessEventHandler
{
public:
	ProcessManager(const std::string &sFilePath);
	ProcessManager(const _int32 &ProcessID);
	~ProcessManager();
............
private:
	void onProcessStart();
	void onProcessWatch();
	void onProcessCrash();
	void onProcessStopped();
	void onProcessManulyStop();
...........
};
проблема заключается в том, что для объектов
std::function<void()> ProcessCrashHandler;
std::function<void()> ProcessStopHandler;
в классе потомке нужно присвоить функции
void onProcessCrash();
void onProcessStopped();
пытаюсь это сделать в конструкторе
Код:
ProcessManager::ProcessManager(const std::string &sFilePath) :
m_ppiProcInfo(),
m_sCommandLine(sFilePath),
m_isRunning(false)
{
	ProcessCrashHandler = onProcessCrash;	 
	ProcessStopHandler = &ProcessManager::onProcessStopped;

	m_pcEventLoger = new EventLogger(getCurrentDirPath());
	onProcessStart();
}
я как только уже не пробовал ничего не получается, через лямда пробовал тоже не получилось. не могу понять то ли у меня руки кривые, или с компилятором-то не в порядке
Помогите пожалуйста

ошибки
Код:
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'overloaded-function' (or there is no acceptable conversion)	
error C3867: 'ProcessManager::onProcessCrash': function call missing argument list; use '&ProcessManager::onProcessCrash' to create a pointer to member
pj-infest вне форума Ответить с цитированием
Старый 08.12.2014, 22:36   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,708
По умолчанию

Если используете не статические методы класса, то первым параметром что будет? А не просто воид...
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в данном примере проблема в Function или Sub? 4anae6 Microsoft Office Excel 4 19.04.2013 20:46
Проблема с std::bad_alloc Mitrik Помощь студентам 1 10.08.2011 21:06
Проблема с переопределением типа void raast777 Общие вопросы C/C++ 6 22.07.2011 14:00
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38
проблема с std::ifstream.eof() alex8 Общие вопросы C/C++ 5 05.05.2009 18:24