将数组值链接到对象成员变量

时间:2017-04-25 02:47:41

标签: c++ arrays hyperlink

我需要array doubledouble链接到某些对象中的成员变量。可以有多个对象,但链接到的成员变量将始终为Foo foo; foo.x = 3.2; Bar bar; bar.y = 1.1; bar.z = 2.0; double arrayValues[2] = {foo.x, bar.y};

例如:

arrayValues

现在,当我更改foo值时,我想轻松地在bararrayValues中更改相应的成员变量。我希望array可以是任何长度,并且可以从任何成员变量集构造。

我在考虑获得pointer的{​​{1}},这与arrayValues相对应。例如:

double* linkArray[2] = {&foo.x, &bar.y};

然后每当我更改arrayValues中的值时,我都会更改linkArray中的相应值:

arrayValues[i] = 4.4;
*linkArray[i] = arrayValues[i];

1 个答案:

答案 0 :(得分:0)

  

我需要在某些对象中有一个指向成员变量的双链接数组。

你做不到。

最接近的是使用std::reference<double>数组。

示例:

#include <iostream>
#include <functional>

struct Foo { double x; };
struct Bar { double y; double z; };

int main()
{
   Foo foo;
   foo.x = 3.2;

   Bar bar;
   bar.y = 1.1;
   bar.z = 2.0;

   std::reference_wrapper<double> arrayValues[] = {{foo.x}, {bar.y}};
   arrayValues[0] *= 2;
   std::cout << arrayValues[0] << std::endl;
   std::cout << foo.x << std::endl;
}

输出

6.4
6.4