class ClassA
{
public:
ClassA();
~ClassA();
void fun(boost::function0<void> a = boost::bind(&ClassA::tmp));
/*ругается на &ClassA::tmp - говорит что должен быть класс или namespace
(error C2825: 'F': must be a class or namespace when followed by '::'
f:\prog\lib\boost\boost_1_35_0\boost\bind.hpp)*/
private:
void tmp(void) {...};
}
передача функции в функцию с созданием значения по умолчанию
вообщем очень хочется написать вот так
Код:
соответственно вызов:
Код:
ClassA aaa;
void fun1(void)
{...}
aaa.fun();
aaa.fun(boost::bind(&ClassA::tmp,&aaa));
void fun1(void)
{...}
aaa.fun();
aaa.fun(boost::bind(&ClassA::tmp,&aaa));
логично бы написать вот так например
Код:
void fun(boost::function0<void> a = boost::bind(&ClassA::tmp, this));
ругается на то что this не может быть в не статичных ф-иях
(error C2355: 'this' : can only be referenced inside non-static member function)
или так передав указатель на объект 1-м параметром
Код:
void fun(ClassA *pt, boost::function0<void> a= boost::bind(&ClassA::tmp, pt));
в этом случае он не знает pt (error C2065: 'pt' : undeclared identifier)
спасибо заранее за идеи
bind ты используешь неправильно.
А вместо значения по умолчанию можно использовать перегрузку:
Код:
void fun(boost::function0<void> a);
void fun() {
tmp();
}
void fun() {
tmp();
}
хотел добиться что либо операция приходит с внешнего мира либо выполняется нечто поумолчанию. спасибо еще раз