提问者:小点点

如何在C++中更有效地分配同名变量?


例如,我有一个类:

class SimpleClass
{
  int fieldOne;
  int fieldTwo;
  int fieldThree;
}

我的代码的某些部分要求将这个变量复制到自己的字段中,但有一件事是我想分配相同的命名变量

void AnotherClass::copyFields(SimpleClass& buf)
{
     fieldOne = buf.fieldOne;
     fieldTwo = buf.fieldTwo;
     fieldThree = buf.fieldThree;
}

如您所见,我只是填充相同的命名变量。 我是否可以使用这个“相同命名”的特性,而不重写变量名,而是实现一些映射,并使这样的赋值变得容易?


共1个答案

匿名用户

有几种方法可以“修复”您的设计,使您不需要手动分配成员:继承,组合,或者这两个类实际上是一个并且是相同的。

与组成:

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++中没有自动迭代类成员的方法。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(何在|c++|中|分配|同名|变量)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?