Повышение привязки с помощью функций / переменных-членов - PullRequest
0 голосов
/ 09 ноября 2011

Класс A имеет доступ к классу B.

В функции класса B я хотел бы вызвать функцию, определенную в классе A, и передать ей аргументы из класса B.

Итак, в классе AI попробуйте написать следующее, чтобы предоставить нужную функцию классу B.

A::provideFunction
{
    boost::function<void()> f = boost::bind(&A::Foo,this,boost::ref(&B::_param1,B::instance()),boost::ref(&B::_param2,B::instance())));
    B::instance()->provideFunction(f);
}

В классе B я просто вызываю функцию:

B::callFunction()
{
    _param1 = "A";
    _param2 = "B";
    _f();
}

Проблема Ihave is that boost: ref ожидает только 1 аргумент ... что я могу сделать, чтобы решить эту проблему?

1 Ответ

1 голос
/ 09 ноября 2011

Чтобы получить указатель на элемент данных, вы не делаете &T::foo, просто делаете &obj->foo. Чтобы получить справочную обертку, ref(obj->foo).

B* b = B::instance();
boost::function<void()> f = boost::bind(
    &A::Foo, this, boost::ref(b->_param1), boost::ref(b->_param2)
);
b->provideFunction(f);

Кроме того, переосмыслите свой дизайн - ни синглтоны, ни странные скрытые неявные аргументы не годятся.

...