c ++ - 为特定类型的所有成员调用函数

时间:2015-05-11 20:48:50

标签: c++

我有一个成员函数C的班级f。用户可以创建自己的类,其中有几个C作为成员。我希望能够在用户定义的类中为f类型的每个成员调用C。问题是如果用户不必提供这样的功能,我无法弄清楚如何实现这一点:

void UserClass::callFonEveryCmember(void) {
    c1.f();
    c2.f();
    ...
}

有什么方法可以实现这个目标吗?

2 个答案:

答案 0 :(得分:2)

C ++没有反射,例如C#,如果那是你之后的事。我过去所做的是从类描述中生成C ++代码,然后用它生成反射代码。即您的用户将进行类描述而不是类。

我看到的短期解决方案是 1)有一个像你上面描述的功能 2)使用一个带有c的向量的成员,而不是单独的成员。

答案 1 :(得分:0)

class UserClass
{
    ...
    vector<C*> v;
}

void UserClass::callFonEveryCmember(void)
{
    for (unsigned i = 0; i < v.size(); ++i) {
        v.at[i]->f();
    }
}