Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

передача функции в функцию с созданием значения по умолчанию

6.8K
05 августа 2008 года
artemkaint
60 / / 12.07.2006
юзаю boost...
вообщем очень хочется написать вот так

Код:
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   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)

спасибо заранее за идеи
3
06 августа 2008 года
Green
4.8K / / 20.01.2000
Непонятно, чего ты хочешь в результате добится.
bind ты используешь неправильно.
А вместо значения по умолчанию можно использовать перегрузку:
 
Код:
void   fun(boost::function0<void> a);

void   fun() {
    tmp();
}
6.8K
06 августа 2008 года
artemkaint
60 / / 12.07.2006
да о перегрузке я даже не подумал..спасибо!
хотел добиться что либо операция приходит с внешнего мира либо выполняется нечто поумолчанию. спасибо еще раз
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог