例如,我有一个类:
class SimpleClass
{
int fieldOne;
int fieldTwo;
int fieldThree;
}
我的代码的某些部分要求将这个变量复制到自己的字段中,但有一件事是我想分配相同的命名变量
void AnotherClass::copyFields(SimpleClass& buf)
{
fieldOne = buf.fieldOne;
fieldTwo = buf.fieldTwo;
fieldThree = buf.fieldThree;
}
如您所见,我只是填充相同的命名变量。 我是否可以使用这个“相同命名”的特性,而不重写变量名,而是实现一些映射,并使这样的赋值变得容易?
有几种方法可以“修复”您的设计,使您不需要手动分配成员:继承,组合,或者这两个类实际上是一个并且是相同的。
与组成:
struct fields {
int fieldOne;
int fieldTwo;
int fieldThree;
};
struct SimpleClass {
fields f;
};
struct AnotherClass {
fields f;
void copyFields(const SimpleClass& s) {
f = s.f;
}
};
如果这不是一个选项,我认为除了使用宏之外没有其他方法,但是您仍然需要键入几乎相同数量的代码:
void AnotherClass::copyFields(SimpleClass& buf)
{
ASSIGN(fieldOne,buf);
ASSIGN(fieldTwo,buf);
ASSIGN(fieldThree,buf);
}
C++没有反射,因此在C++中没有自动迭代类成员的方法。