C ++比较两个结构以显示有什么区别

时间:2014-11-06 23:14:56

标签: c++

我有两个像这样的结构

struct Activity {
int id;
string Description;
int parameter1;
int parameter2;
int parameter3;
int parameter4;
etc...
}

Activity A1;
A1.id=0;
A1.parameter1=50;

Activity A2;
A2.id=0;
A2.parameter1=55;

我想对它们进行比较,以显示哪些成员有所不同? 在这种情况下,例如:

paameter1不同......

由于

1 个答案:

答案 0 :(得分:3)

这样做的最佳解决方案可能是在结构中编写公共方法,将自身与通过参数传递的结构进行比较。

这将是这样的

struct Activity {
  int id;
  string Description;
  int parameter1;
  int parameter2;
  int parameter3;
  int parameter4;
  etc...

  public:
    bool compare(const Activity& param)
    {
      //...compare structs here like:
      if (id != param.id)
        //write something

      //etc...

      //at the end you can also return bool that indicates that structs are equal or not
      return true;
    }
}

除非你编写更多的比较方法,否则这显然只适用于两个相同的类,但是可能很难比较两种不同的结构。

还有其他比较两个变量(包括结构)的方法。为此,可以使用 memcmp()函数,但它不会直接告诉您哪些字段不同。

根据@Tony_D的说法编辑。