我有一个成员函数C
的班级f
。用户可以创建自己的类,其中有几个C
作为成员。我希望能够在用户定义的类中为f
类型的每个成员调用C
。问题是如果用户不必提供这样的功能,我无法弄清楚如何实现这一点:
void UserClass::callFonEveryCmember(void) {
c1.f();
c2.f();
...
}
有什么方法可以实现这个目标吗?
答案 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();
}
}