gpt4 book ai didi

c++ - 如何在不引起循环依赖的情况下传递然后调用通用回调函数

转载 作者:行者123 更新时间:2023-11-28 08:33:53 24 4
gpt4 key购买 nike

无法创造性地缩短标题 :)

我一直在使用以下解决方案的变体,但我一直想知道是否有更好/更简洁的方法来实现它。我正在寻找非 boost 解决方案。不过,我们可以查看 boost 和 C++0x 的实现,因为它们很快就会相关。

//Notice the use of template template parameter
template <template <typename> class Callback>
class A {
Callback <A> m_func;
public:
A (Callback <A> func): m_func (func) {}
void call () { m_func(*this);}

};

template <typename T>
struct MYCallback
{
void operator () (const T&t) {}

};


void Test()
{
typedef A<MYCallback> AType;

MYCallback<AType> callback;
AType a (callback);
a.call ();

}

另一种更简洁的方法是使用 tr1::function,它将成为defuct-to 新的标准化:

#include <tr1/functional>


class A {
std::tr1::function <void (const A&)> m_func;
public:
template <class Callback>
A (Callback func) : m_func (func) {}

void call () { m_func(*this);}

};

template <class T>
struct My_callback
{
void operator () (const T&t) {}

};

void Test ()
{
My_callback <A> c;
A a (c);
a.call ();
}

最佳答案

我始终相信 void* 是您想要优雅地使用这些东西的 friend 。

关于c++ - 如何在不引起循环依赖的情况下传递然后调用通用回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/578259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com