增强与成员函数/变量的绑定

发布于 2024-12-14 16:24:52 字数 519 浏览 4 评论 0原文

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::callFunction()
{
    _param1 = "A";
    _param2 = "B";
    _f();
}

我遇到的问题是 boost:ref 只需要 1 个参数...我能做些什么来解决这个问题?

Class A has access to class B.

In a class B function, I'd like to call a function defined in class A, and pass to it arguments from class B.

So in class A I try to write the following to provide the desired function to class 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);
}

In class B, I just call the function:

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

The problem I have is that boost:ref expects only 1 argument... what can I do to resolve this issu?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深空失忆 2024-12-21 16:24:56

要获取指向数据成员的指针,您不需要执行 &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);

另外,重新考虑你的设计——单例和这种奇怪的隐藏隐式参数都不好。

To get a pointer to data member, you don't do &T::foo, just do &obj->foo. To get a reference wrapper, 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);

Also, rethink your design — neither singletons nor this weird hidden implicit arguments thing are good.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文