有人可以帮我解决以下情况:
在类定义中,需要定义任意数量的特定类型的成员字段,并在创建此类实例时自动调用它们的特定操作。喜欢,
class C {
}
class F1 {
public:
int check(C* host);
}
class C1:public C {
public:
C1() { this->pre_checks(); }
F1 m_a1;
F1 m_a2;
public:
void pre_checks() { // use inline solution
m_a1.check(this);
m_a2.check(this);
}
}
在上述情况下,类 C1 包含两个 F1 类型的字段。因此在 C1 的函数 pre_checks() 中,每个字段都会在创建 C1 的实例时自动执行其额外的操作“check()”。
字段编号可以是任何或非。C2 类可以:
class C2: public C {
public:
C2() { this->pre_checks(); }
F1 m_t1;
F1 m_t2;
...
F1 m_tn;
public:
void pre_checks() { // use inline solution
m_t1.check(this);
m_t2.check(this);
...
m_tn.check(this);
}
}
我怎样才能使用一个宏,比如 MDEF_FIELD,来做这样的事情:
class C3: public C {
MDEF_FIELD m_b1;
MDEF_FIELD m_b2;
...
MDEF_FIELD m_bn;
}
并且 C3 类定义还将包含以下代码:
m_b1.check(this);
m_b2.check(this);
...
m_b3.check(this);
并且每次创建 C3 实例时都会自动执行它们。
谢谢