【发布时间】:2021-08-23 02:37:04
【问题描述】:
class A
{
public:
A* m_child;
A* m_brother;
int x;
A(int num) :x{ num } {};
public:
template<typename Pred, typename...Args>
void ForFamily(Pred, Args&&... args) {
if (m_child) Pred(m_child*, std::forward<Args>(args)...);
if (m_brother) m_brother->Pred(std::forward<Args>(args)...);
}
void f(int a, int b) {
cout << x + a + b;
}
void g(int a) {
cout << a + x;
}
};
我想制作一个适用于每个 m_child 和 m_brother 的 Template_Func。我怎样才能使它起作用? 我会这样使用它
int main()
{
A a(1), b(2), c(3);
a.m_child = &b;
a.m_brother = &c;
a.ForFamily(A::f, 1, 2);
a.ForFamily(A::g, 1);
}
【问题讨论】:
-
@fabian 我编辑了!